lido-player 0.0.2-alpha-10 → 0.0.2-alpha-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/cjs/index.cjs.js +1 -1
  2. package/dist/cjs/lido-avatar_13.cjs.entry.js +1 -1
  3. package/dist/cjs/{utils-5b00f27b.js → utils-6cf81db6.js} +5 -2
  4. package/dist/cjs/utils-6cf81db6.js.map +1 -0
  5. package/dist/collection/utils/audioPlayer.js +4 -1
  6. package/dist/collection/utils/audioPlayer.js.map +1 -1
  7. package/dist/components/index.js +1 -1
  8. package/dist/components/lido-avatar.js +1 -1
  9. package/dist/components/lido-col.js +1 -1
  10. package/dist/components/lido-container.js +1 -1
  11. package/dist/components/lido-home.js +1 -1
  12. package/dist/components/lido-image.js +1 -1
  13. package/dist/components/lido-pos.js +1 -1
  14. package/dist/components/lido-root.js +11 -11
  15. package/dist/components/lido-row.js +1 -1
  16. package/dist/components/lido-shape.js +1 -1
  17. package/dist/components/lido-text.js +1 -1
  18. package/dist/components/lido-trace.js +1 -1
  19. package/dist/components/lido-wrap.js +1 -1
  20. package/dist/components/{p-185d3021.js → p-05af960d.js} +2 -2
  21. package/dist/components/{p-185d3021.js.map → p-05af960d.js.map} +1 -1
  22. package/dist/components/{p-e90137c1.js → p-0e6c1da3.js} +2 -2
  23. package/dist/components/{p-e90137c1.js.map → p-0e6c1da3.js.map} +1 -1
  24. package/dist/components/{p-95cfda5b.js → p-10530dff.js} +2 -2
  25. package/dist/components/{p-95cfda5b.js.map → p-10530dff.js.map} +1 -1
  26. package/dist/components/{p-3230edf7.js → p-27c1a9f0.js} +2 -2
  27. package/dist/components/{p-3230edf7.js.map → p-27c1a9f0.js.map} +1 -1
  28. package/dist/components/{p-2c6af93f.js → p-48e9e250.js} +2 -2
  29. package/dist/components/{p-2c6af93f.js.map → p-48e9e250.js.map} +1 -1
  30. package/dist/components/{p-21c7365d.js → p-522c0ec0.js} +2 -2
  31. package/dist/components/{p-21c7365d.js.map → p-522c0ec0.js.map} +1 -1
  32. package/dist/components/{p-3bf3a2f8.js → p-526fd8d3.js} +2 -2
  33. package/dist/components/{p-3bf3a2f8.js.map → p-526fd8d3.js.map} +1 -1
  34. package/dist/components/{p-7b4c4606.js → p-57c32539.js} +5 -2
  35. package/dist/components/p-57c32539.js.map +1 -0
  36. package/dist/components/{p-a88c0bb4.js → p-5d215c12.js} +2 -2
  37. package/dist/components/{p-a88c0bb4.js.map → p-5d215c12.js.map} +1 -1
  38. package/dist/components/{p-24527345.js → p-5e0011f1.js} +2 -2
  39. package/dist/components/{p-24527345.js.map → p-5e0011f1.js.map} +1 -1
  40. package/dist/components/{p-5465821b.js → p-cba45af3.js} +2 -2
  41. package/dist/components/{p-5465821b.js.map → p-cba45af3.js.map} +1 -1
  42. package/dist/components/{p-b8564fe1.js → p-fc7ef390.js} +12 -12
  43. package/dist/components/{p-b8564fe1.js.map → p-fc7ef390.js.map} +1 -1
  44. package/dist/esm/index.js +1 -1
  45. package/dist/esm/lido-avatar_13.entry.js +1 -1
  46. package/dist/esm/{utils-6f3eee22.js → utils-6a1afb35.js} +5 -2
  47. package/dist/esm/utils-6a1afb35.js.map +1 -0
  48. package/dist/lido-player/index.esm.js +1 -1
  49. package/dist/lido-player/lido-player.esm.js +1 -1
  50. package/dist/lido-player/p-50c7c31f.js +2 -0
  51. package/dist/lido-player/p-50c7c31f.js.map +1 -0
  52. package/dist/lido-player/{p-6c9941bc.entry.js → p-8e391ca8.entry.js} +2 -2
  53. package/package.json +1 -1
  54. package/dist/cjs/utils-5b00f27b.js.map +0 -1
  55. package/dist/components/p-7b4c4606.js.map +0 -1
  56. package/dist/esm/utils-6f3eee22.js.map +0 -1
  57. package/dist/lido-player/p-2a7789d3.js +0 -2
  58. package/dist/lido-player/p-2a7789d3.js.map +0 -1
  59. /package/dist/lido-player/{p-6c9941bc.entry.js.map → p-8e391ca8.entry.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const utils = require('./utils-5b00f27b.js');
5
+ const utils = require('./utils-6cf81db6.js');
6
6
  require('./index-0d28e716.js');
7
7
 
8
8
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0d28e716.js');
6
- const utils = require('./utils-5b00f27b.js');
6
+ const utils = require('./utils-6cf81db6.js');
7
7
 
8
8
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
9
9
 
@@ -84,7 +84,10 @@ class AudioPlayer {
84
84
  return AudioPlayer.instance;
85
85
  }
86
86
  stop() {
87
- window.speechSynthesis.cancel();
87
+ //check if speechSynthesis is supported
88
+ if (window === null || window === void 0 ? void 0 : window.speechSynthesis) {
89
+ window.speechSynthesis.cancel();
90
+ }
88
91
  this.audioElement.pause();
89
92
  this.audioElement.currentTime = 0;
90
93
  this.audioElement.src = ''; // Clear source to prevent replaying old audio
@@ -1232,4 +1235,4 @@ exports.initEventsForElement = initEventsForElement;
1232
1235
  exports.parseProp = parseProp;
1233
1236
  exports.triggerNextContainer = triggerNextContainer;
1234
1237
 
1235
- //# sourceMappingURL=utils-5b00f27b.js.map
1238
+ //# sourceMappingURL=utils-6cf81db6.js.map
@@ -0,0 +1 @@
1
+ {"file":"utils-6cf81db6.js","mappings":"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","names":["TraceMode","getAssetPath"],"sources":["src/utils/constants.ts","src/utils/customEvents.ts","src/utils/rive-service.ts","src/utils/audioPlayer.ts","src/utils/utils.ts"],"sourcesContent":["export const DragSelectedMapKey = 'lidoDragSelectedMap';\nexport const SelectedValuesKey = 'lidoSelectedValues';\nexport const ActivityScoreKey = 'lidoActivityScore';\nexport const ActivityEndKey = 'lidoActivityEnd';\nexport const LessonEndKey = 'lidoLessonEnd';\nexport const NextContainerKey = 'lidoNextContainer';\nexport const ActivityChangeKey = 'lidoActivityChange';\nexport const GameCompletedKey = 'lidoGameCompleted';\nexport const GameExitKey = 'lidoGameExit';\nexport const ElementDropKey = 'lidoElementDrop';\nexport const ElementClickKey = 'lidoElementClick';\n\nexport enum TraceMode {\n NoFlow = 'lido-noFlow',\n ShowFlow = 'lido-showFlow',\n FreeTrace = 'lido-freeTrace',\n BlindTracing = 'lido-blindTracing',\n BlindFreeTrace = 'lido-blindFreeTrace',\n}\n\nexport default class GameScore{\n rightMoves: number = 0;\n wrongMoves: number = 0;\n finalScore: number = 0;\n}\n","import { ActivityChangeKey, ActivityEndKey, ElementClickKey, ElementDropKey, GameCompletedKey, GameExitKey, LessonEndKey, NextContainerKey } from './constants';\n\nfunction dispatchCustomEvent(eventName: string, detail: any) {\n const event = new CustomEvent(eventName, { detail });\n window.dispatchEvent(event);\n}\n\nexport function dispatchActivityEndEvent(index: number, totalIndex: number, score: number) {\n dispatchCustomEvent(ActivityEndKey, { index, totalIndex, score });\n}\n\nexport function dispatchLessonEndEvent(score: number) {\n dispatchCustomEvent(LessonEndKey, { score });\n}\n\nexport function dispatchNextContainerEvent() {\n dispatchCustomEvent(NextContainerKey, {});\n}\n\nexport function dispatchGameCompletedEvent() {\n dispatchCustomEvent(GameCompletedKey, {});\n}\n\nexport function dispatchGameExitEvent() {\n dispatchCustomEvent(GameExitKey, {});\n}\n\nexport function dispatchActivityChangeEvent(index: number) {\n dispatchCustomEvent(ActivityChangeKey, { index });\n}\n\nexport function dispatchElementDropEvent(dragElement: HTMLElement, dropElement: HTMLElement, isCorrect: boolean) {\n dispatchCustomEvent(ElementDropKey, { dragElement, dropElement, isCorrect: isCorrect, createdAt: new Date().toISOString() });\n}\n\nexport function dispatchClickEvent(element: HTMLElement, isCorrect: boolean) {\n dispatchCustomEvent(ElementClickKey, { element, isCorrect: isCorrect, createdAt: new Date().toISOString() });\n}\n","// rive-service.ts\nexport class RiveService {\n private static instance: RiveService;\n public riveInstance: any;\n\n private constructor() {}\n\n public static getInstance() {\n if (!RiveService.instance) {\n RiveService.instance = new RiveService();\n }\n return RiveService.instance;\n }\n\n public setRiveInstance(instance: any) {\n this.riveInstance = instance;\n }\n\n public getRiveInstance() {\n return this.riveInstance;\n }\n}\n","import { convertUrlToRelative, highlightSpeakingElement, stopHighlightForSpeakingElement, speakText } from './utils';\n\nexport class AudioPlayer {\n private static instance: AudioPlayer;\n private audioElement: HTMLAudioElement;\n\n private constructor() {\n this.audioElement = document.createElement('audio');\n this.audioElement.id = 'audio';\n document.body.appendChild(this.audioElement);\n }\n\n public static getI(): AudioPlayer {\n if (!AudioPlayer.instance) {\n AudioPlayer.instance = new AudioPlayer();\n }\n return AudioPlayer.instance;\n }\n\n public stop() {\n //check if speechSynthesis is supported\n if (window?.speechSynthesis) {\n window.speechSynthesis.cancel();\n }\n this.audioElement.pause();\n this.audioElement.currentTime = 0;\n this.audioElement.src = ''; // Clear source to prevent replaying old audio\n\n const highlightedElements = document.querySelectorAll('.speaking-highlight');\n highlightedElements.forEach(element => stopHighlightForSpeakingElement(element as HTMLElement));\n }\n\n public async play(targetElement: HTMLElement) {\n this.stop();\n\n let audioUrl = targetElement.getAttribute('audio') || '';\n\n if (!audioUrl) {\n const childElements = targetElement.children;\n for (let i = 0; i < childElements.length; i++) {\n const childAudioUrl = childElements[i].getAttribute('audio');\n if (childAudioUrl) {\n audioUrl = childAudioUrl;\n }\n }\n }\n\n if (audioUrl) {\n audioUrl = convertUrlToRelative(audioUrl);\n this.audioElement.src = audioUrl;\n console.log('🚀 Playing audio:', this.audioElement.src);\n\n try {\n await this.audioElement.play();\n highlightSpeakingElement(targetElement);\n\n await new Promise<void>(resolve => {\n this.audioElement.onended = () => {\n stopHighlightForSpeakingElement(targetElement);\n resolve();\n };\n });\n } catch (error) {\n console.log('🚀 Audio play error:', error);\n }\n }\n // If no audio, use text-to-speech\n else if (targetElement.textContent) {\n try {\n highlightSpeakingElement(targetElement);\n await speakText(targetElement.textContent, targetElement);\n stopHighlightForSpeakingElement(targetElement);\n } catch (error) {\n console.log('🚀 TTS Error:', error);\n }\n }\n }\n}\n","import { ActivityScoreKey, DragSelectedMapKey, LessonEndKey, SelectedValuesKey } from './constants';\nimport { dispatchActivityEndEvent, dispatchClickEvent, dispatchElementDropEvent, dispatchLessonEndEvent, dispatchNextContainerEvent } from './customEvents';\nimport GameScore from './constants';\nimport { RiveService } from './rive-service';\nimport { getAssetPath } from '@stencil/core';\nimport { AudioPlayer } from './audioPlayer';\nconst gameScore = new GameScore();\n\nexport function format(first?: string, middle?: string, last?: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\n// Function to get the scale of an element\nconst getElementScale = (el: HTMLElement): number => {\n el.style.animation = 'unset';\n const transform = window.getComputedStyle(el).transform;\n if (transform === 'none') {\n return 1; // No scaling\n } else {\n const matrix = transform.match(/matrix\\(([^)]+)\\)/);\n if (matrix) {\n const matrixValues = matrix[1].split(', ');\n const scaleX = parseFloat(matrixValues[0]);\n return scaleX; // Assuming uniform scaling (same scale in X and Y)\n }\n }\n return 1; // Fallback to no scaling\n};\n\nfunction slidingWithScaling(element: HTMLElement): void {\n let overlapElement = false;\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialX = 0;\n let initialY = 0;\n\n // Fetch the container element\n const parentElement = element.parentElement;\n if (!parentElement) {\n console.error(`Parent element not found.`);\n return;\n }\n\n let verticalDistance;\n let horizontalDistance;\n\n const onStart = (event: MouseEvent | TouchEvent): void => {\n removeHighlight(element);\n isDragging = true;\n\n if (event instanceof MouseEvent) {\n startX = event.clientX;\n startY = event.clientY;\n } else {\n startX = event.touches[0].clientX;\n startY = event.touches[0].clientY;\n }\n\n // Apply dragging styles to the element\n element.style.opacity = '0.8';\n element.style.cursor = 'grabbing';\n\n // Parse the current transform values at the start of each drag\n const transform = window.getComputedStyle(element).transform;\n if (transform !== 'none') {\n const matrix = transform.match(/matrix\\(([^)]+)\\)/);\n if (matrix) {\n const matrixValues = matrix[1].split(', ');\n initialX = parseFloat(matrixValues[4]);\n initialY = parseFloat(matrixValues[5]);\n }\n } else {\n initialX = 0;\n initialY = 0;\n }\n\n const rect1 = parentElement.getBoundingClientRect();\n const rect2 = element.getBoundingClientRect();\n verticalDistance = rect1.top - rect2.top;\n horizontalDistance = rect1.left - rect2.left;\n\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onEnd);\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n };\n\n const observer = new MutationObserver(mutationsList => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'style') {\n const rect1 = parentElement.getBoundingClientRect();\n const rect2 = element.getBoundingClientRect();\n verticalDistance = rect1.top - rect2.top;\n horizontalDistance = rect1.left - rect2.left;\n }\n }\n });\n\n // Configure the observer to watch for attribute changes\n const observerConfig = {\n attributes: true, // Monitor attribute changes\n attributeFilter: ['style'], // Only observe changes to the 'style' attribute\n };\n\n // Start observing the element\n observer.observe(parentElement, observerConfig);\n\n const onMove = (event: MouseEvent | TouchEvent): void => {\n if (!isDragging) return;\n const parentElementScale = getElementScale(parentElement);\n let dx = 0;\n let dy = 0;\n\n if (event instanceof MouseEvent) {\n dx = (event.clientX - startX) / parentElementScale;\n dy = (event.clientY - startY) / parentElementScale;\n } else {\n dx = (event.touches[0].clientX - startX) / parentElementScale;\n dy = (event.touches[0].clientY - startY) / parentElementScale;\n }\n\n // Calculate the new position considering scaling\n const newLeft = initialX + dx;\n const newTop = initialY + dy;\n\n // Get the dimensions and scale-corrected position of the container and element\n const containerRect = parentElement.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n const numbers = element.style.transform.match(/-?\\d+(\\.\\d+)?/g);\n const result = numbers.map(Number);\n const initialElementLeftPx = elementRect.left / parentElementScale - result[0];\n const initialElementTopPx = elementRect.top - result[1];\n const initialElementRightPx = elementRect.right / parentElementScale - result[0];\n const initialElementBottomPx = elementRect.bottom - result[1];\n\n const maxRight = containerRect.right - initialElementRightPx;\n const maxLeft = containerRect.left - initialElementLeftPx;\n const maxTop = containerRect.top - initialElementTopPx;\n const maxBottom = containerRect.bottom - initialElementBottomPx;\n\n const newLeftClamp = newLeft + initialElementLeftPx <= containerRect.left ? maxLeft : Math.min(newLeft, maxRight);\n const newTopClamp = newTop + initialElementTopPx <= containerRect.top ? maxTop : Math.min(newTop, maxBottom);\n\n // Apply transform with translation within boundaries\n element.style.transform = `translate(${newLeftClamp}px, ${newTopClamp}px)`;\n\n // Check for overlaps and highlight only the most overlapping element\n let mostOverlappedElement: HTMLElement = findMostoverlappedElement(element, 'slide');\n\n // Apply styles only to the most overlapped element\n if (mostOverlappedElement) {\n if (mostOverlappedElement != element) {\n const parent1 = element.parentElement;\n const parent2 = mostOverlappedElement.parentElement;\n\n if (parent1 && parent2) {\n // Temporarily detach both elements\n const elementPlaceholder = document.createComment('element-placeholder');\n const overlappedPlaceholder = document.createComment('overlapped-placeholder');\n parent1.replaceChild(elementPlaceholder, element);\n parent2.replaceChild(overlappedPlaceholder, mostOverlappedElement);\n // Swap the elements\n parent1.replaceChild(mostOverlappedElement, elementPlaceholder);\n parent2.replaceChild(element, overlappedPlaceholder);\n element.style.transform = 'translate(0, 0)';\n\n // Recalculate starting points for the swapped element\n startX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n startY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n initialX = 0;\n initialY = 0;\n overlapElement = true;\n }\n }\n }\n };\n\n const onEnd = (endEv): void => {\n isDragging = false;\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onEnd);\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n\n // Reset styles when dragging ends\n element.style.opacity = '';\n element.style.cursor = 'move';\n element.style.transform = 'translate(0, 0)';\n\n if (overlapElement) {\n slideCompleted(element);\n overlapElement = false;\n }\n };\n // Initialize draggable element styles\n element.style.cursor = 'move';\n element.style.transform = 'translate(0, 0)'; // Initialize transform for consistent dragging\n\n element.addEventListener('mousedown', onStart);\n element.addEventListener('touchstart', onStart);\n element.addEventListener('click', ev => {\n onClickDropOrDragElement(element, 'drag');\n });\n}\n\nconst slideCompleted = (slideElement: HTMLElement) => {\n const slideArr = JSON.parse(localStorage.getItem(SelectedValuesKey)) || [];\n const allSlideElements = document.querySelectorAll(\"[type='slide']\");\n\n let index = 0;\n allSlideElements.forEach(item => {\n slideArr[index++] = item['value'];\n });\n localStorage.setItem(SelectedValuesKey, JSON.stringify(slideArr));\n\n const objectiveString = document.querySelector('#lido-container')['objective'];\n const objectiveArray = objectiveString.split(',');\n const elementIndex = slideArr.indexOf(slideElement['value']);\n const isCorrect = matchStringPattern(slideElement['value'], [objectiveArray[elementIndex].trim()]);\n storingEachActivityScore(isCorrect);\n handleShowCheck();\n};\n\nfunction enableDraggingWithScaling(element: HTMLElement): void {\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialX = 0;\n let initialY = 0;\n // Fetch the container element\n const container = document.querySelector('#lido-container') as HTMLElement;\n if (!container) {\n console.error(`Container with ID \"container\" not found.`);\n return;\n }\n\n let verticalDistance;\n let horizontalDistance;\n\n const onStart = (event: MouseEvent | TouchEvent): void => {\n AudioPlayer.getI().stop();\n removeHighlight(element);\n isDragging = true;\n\n if (event instanceof MouseEvent) {\n startX = event.clientX;\n startY = event.clientY;\n } else {\n startX = event.touches[0].clientX;\n startY = event.touches[0].clientY;\n }\n\n // Apply dragging styles to the element\n element.style.opacity = '0.8';\n element.style.cursor = 'grabbing';\n\n // Parse the current transform values at the start of each drag\n const transform = window.getComputedStyle(element).transform;\n if (transform !== 'none') {\n const matrix = transform.match(/matrix\\(([^)]+)\\)/);\n if (matrix) {\n const matrixValues = matrix[1].split(', ');\n\n initialX = parseFloat(matrixValues[4]);\n initialY = parseFloat(matrixValues[5]);\n }\n } else {\n initialX = 0;\n initialY = 0;\n }\n\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onEnd);\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n };\n\n const rect1 = container.getBoundingClientRect();\n const rect2 = element.getBoundingClientRect();\n verticalDistance = rect1.top - rect2.top;\n horizontalDistance = rect1.left - rect2.left;\n\n const observer = new MutationObserver(mutationsList => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'style') {\n const rect1 = container.getBoundingClientRect();\n const rect2 = element.getBoundingClientRect();\n verticalDistance = rect1.top - rect2.top;\n horizontalDistance = rect1.left - rect2.left;\n }\n }\n });\n\n // Configure the observer to watch for attribute changes\n const observerConfig = {\n attributes: true, // Monitor attribute changes\n attributeFilter: ['style'], // Only observe changes to the 'style' attribute\n };\n\n // Start observing the element\n observer.observe(container, observerConfig);\n\n const onMove = (event: MouseEvent | TouchEvent): void => {\n if (!isDragging) return;\n\n const containerScale = getElementScale(container);\n\n let dx = 0;\n let dy = 0;\n\n if (event instanceof MouseEvent) {\n dx = (event.clientX - startX) / containerScale;\n dy = (event.clientY - startY) / containerScale;\n } else {\n dx = (event.touches[0].clientX - startX) / containerScale;\n dy = (event.touches[0].clientY - startY) / containerScale;\n }\n\n // Calculate the new position considering scaling\n const newLeft = initialX + dx;\n const newTop = initialY + dy;\n\n // Get the dimensions and scale-corrected position of the container and element\n const containerRect = container.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n const numbers = element.style.transform.match(/-?\\d+(\\.\\d+)?/g);\n const result = numbers.map(Number);\n const initialElementLeftPx = elementRect.left / containerScale - result[0];\n const initialElementTopPx = elementRect.top - result[1];\n\n const maxRight = containerRect.width / containerScale - Math.abs(horizontalDistance / containerScale) - elementRect.width / containerScale;\n const maxLeft = containerRect.left - initialElementLeftPx;\n const maxTop = containerRect.top - initialElementTopPx;\n const maxBottom = containerRect.height / containerScale - Math.abs(verticalDistance / containerScale) - elementRect.height / containerScale;\n\n const newLeftClamp = newLeft + initialElementLeftPx <= containerRect.left ? maxLeft : Math.min(newLeft, maxRight);\n const newTopClamp = newTop + initialElementTopPx <= containerRect.top ? maxTop : Math.min(newTop, maxBottom);\n\n // Apply transform with translation within boundaries\n element.style.transform = `translate(${newLeftClamp}px, ${newTopClamp}px)`;\n\n // Check for overlaps and highlight only the most overlapping element\n let mostOverlappedElement: HTMLElement = findMostoverlappedElement(element, 'drop');\n\n const allElements = document.querySelectorAll<HTMLElement>(\"[type='drop']\");\n // Reset styles for all elements\n allElements.forEach(otherElement => {\n const dropObject = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const storedTabIndexes = Object.keys(dropObject).map(Number);\n if (storedTabIndexes.includes(otherElement['tabIndex'])) {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = 'transparent'; // Reset background color\n } else {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = ''; // Reset background color\n }\n });\n\n // Apply styles only to the most overlapped element\n if (mostOverlappedElement) {\n mostOverlappedElement.style.border = '2px dashed #ff0000'; // Red dashed border\n mostOverlappedElement.style.backgroundColor = 'rgba(255, 0, 0, 0.1)'; // Light red background\n }\n };\n\n const onEnd = (endEv): void => {\n isDragging = false;\n\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onEnd);\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n\n // Reset styles when dragging ends\n element.style.opacity = '';\n element.style.cursor = 'move';\n\n // Reset overlapping styles from all elements\n const allElements = document.querySelectorAll<HTMLElement>(\"[type='drop']\");\n allElements.forEach(otherElement => {\n allElements.forEach(otherElement => {\n const dropObject = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const storedTabIndexes = Object.keys(dropObject).map(Number);\n if (storedTabIndexes.includes(otherElement['tabIndex'])) {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = 'transparent'; // Reset background color\n } else {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = ''; // Reset background color\n }\n });\n });\n\n // Check for overlaps and log the most overlapping element\n let mostOverlappedElement: HTMLElement = findMostoverlappedElement(element, 'drop');\n onElementDropComplete(element, mostOverlappedElement);\n };\n // Initialize draggable element styles\n element.style.cursor = 'move';\n element.style.transform = 'translate(0, 0)'; // Initialize transform for consistent dragging\n\n element.addEventListener('mousedown', onStart);\n element.addEventListener('touchstart', onStart);\n element.addEventListener('click', ev => {\n onClickDropOrDragElement(element, 'drag');\n });\n}\n\nconst findMostoverlappedElement = (element: HTMLElement, type: string) => {\n const elementRect = element.getBoundingClientRect();\n const allElements = document.querySelectorAll<HTMLElement>(`[type=\"${type}\"]`);\n\n let mostOverlappedElement: HTMLElement | null = null;\n let maxOverlapArea = 0;\n\n allElements.forEach(otherElement => {\n if (otherElement === element) return;\n const otherRect = otherElement.getBoundingClientRect();\n // Check if there is overlap\n const overlapWidth = Math.max(0, Math.min(elementRect.right, otherRect.right) - Math.max(elementRect.left, otherRect.left));\n const overlapHeight = Math.max(0, Math.min(elementRect.bottom, otherRect.bottom) - Math.max(elementRect.top, otherRect.top));\n const overlapArea = overlapWidth * overlapHeight;\n\n if (type === 'slide') {\n const elementArea = elementRect.width * elementRect.height; // Area of the dragged element\n const otherArea = otherRect.width * otherRect.height; // Area of the other element\n // Determine the threshold for overlap (at least 80% of the smaller element's area)\n const minimumArea = Math.min(elementArea, otherArea) * 0.8;\n\n // Check if the overlap area exceeds the threshold\n if (overlapArea >= minimumArea && overlapArea > maxOverlapArea) {\n maxOverlapArea = overlapArea;\n mostOverlappedElement = otherElement;\n }\n return;\n }\n\n // Update the most overlapped element if this one has a larger overlap area\n if (overlapArea > maxOverlapArea) {\n maxOverlapArea = overlapArea;\n mostOverlappedElement = otherElement;\n }\n });\n return mostOverlappedElement;\n};\n\nasync function onElementDropComplete(dragElement: HTMLElement, dropElement: HTMLElement): Promise<void> {\n const selectedValueData = localStorage.getItem(SelectedValuesKey);\n const dragSelectedData = localStorage.getItem(DragSelectedMapKey);\n if (dropElement && dropElement.getAttribute('isAllowOnlyOneDrop') === 'true') {\n // Check for overlaps and highlight only the most overlapping element\n let mostOverlappedElement: HTMLElement = findMostoverlappedElement(dragElement, 'drag');\n if (mostOverlappedElement) {\n dragElement.style.transform = 'translate(0,0)';\n if (dragSelectedData) {\n let dragSelected = JSON.parse(dragSelectedData);\n for (const key in dragSelected) {\n if (dragSelected[key].includes(dragElement['value'])) {\n delete dragSelected[key];\n }\n }\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(dragSelected));\n }\n const allElements = document.querySelectorAll<HTMLElement>(\"[type='drop']\");\n allElements.forEach(otherElement => {\n const dropObject = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const storedTabIndexes = Object.keys(dropObject).map(Number);\n if (storedTabIndexes.includes(otherElement['tabIndex'])) {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = 'transparent'; // Reset background color\n } else {\n otherElement.style.border = '';\n otherElement.style.backgroundColor = '';\n }\n });\n return;\n }\n }\n if (!dropElement) {\n if (selectedValueData) {\n let selectedValue = JSON.parse(selectedValueData);\n selectedValue = selectedValue.filter(value => value != dragElement['value']);\n localStorage.setItem(SelectedValuesKey, JSON.stringify(selectedValue));\n }\n if (dragSelectedData) {\n let dragSelected = JSON.parse(dragSelectedData);\n for (const key in dragSelected) {\n if (dragSelected[key].includes(dragElement['value'])) {\n delete dragSelected[key];\n }\n }\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(dragSelected));\n }\n\n const allElements = document.querySelectorAll<HTMLElement>(\"[type='drop']\");\n allElements.forEach(otherElement => {\n const dropObject = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const storedTabIndexes = Object.keys(dropObject).map(Number);\n if (storedTabIndexes.includes(otherElement['tabIndex'])) {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = 'transparent'; // Reset background color\n } else {\n otherElement.style.border = '';\n otherElement.style.backgroundColor = '';\n }\n });\n\n handleShowCheck();\n return;\n }\n\n if (dragSelectedData) {\n let dragSelected = JSON.parse(dragSelectedData);\n for (const key in dragSelected) {\n if (dragSelected[key].includes(dragElement['value'])) {\n delete dragSelected[key];\n }\n }\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(dragSelected));\n }\n\n // Add pulse and highlight effect for a successful match\n const isCorrect = dropElement['value'].includes(dragElement['value']);\n dispatchElementDropEvent(dragElement, dropElement, isCorrect);\n if (isCorrect) {\n // Perform actions if onMatch is defined\n const onCorrect = dropElement.getAttribute('onCorrect');\n if (onCorrect) {\n await executeActions(onCorrect, dropElement, dragElement);\n }\n } else {\n const onInCorrect = dropElement.getAttribute('onInCorrect');\n\n await executeActions(onInCorrect, dropElement, dragElement);\n\n // showWrongAnswerAnimation([dropElement, dragElement]);\n }\n storingEachActivityScore(isCorrect);\n await onActivityComplete(dragElement, dropElement);\n}\n\n// Function to execute actions parsed from the onMatch string\nconst executeActions = async (actionsString: string, thisElement: HTMLElement, element?: HTMLElement): Promise<void> => {\n const actions = parseActions(actionsString);\n\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n\n const queriedElement = document.querySelector(action.actor) as HTMLElement | null;\n const targetElement = action.actor === 'this' ? thisElement : action.actor === 'element' ? element : queriedElement ? queriedElement : document.getElementById(action.actor);\n\n if (targetElement) {\n // Handle the 'transform' property separately\n switch (action.action) {\n case 'transform': {\n const currentTransform = window.getComputedStyle(targetElement).transform;\n targetElement.style.transform = currentTransform !== 'none' ? `${currentTransform} ${action.value}` : action.value;\n break;\n }\n case 'alignMatch': {\n const dropElement = targetElement;\n const dragElement = element;\n\n const container = document.querySelector('#lido-container') as HTMLElement;\n const containerScale = getElementScale(container);\n dragElement.style.transform = 'translate(0,0)';\n const dropRect = dropElement.getBoundingClientRect();\n const dragRect = dragElement.getBoundingClientRect();\n\n const scaledLeft = (dropRect.left - dragRect.left) / containerScale;\n const scaledTop = (dropRect.top - dragRect.top) / containerScale;\n dragElement.style.transform = `translate(${scaledLeft}px, ${scaledTop}px)`;\n break;\n }\n case 'addClass': {\n targetElement.classList.add(action.value);\n break;\n }\n case 'speak': {\n await AudioPlayer.getI().play(targetElement);\n break;\n }\n\n case 'sleep': {\n const isNumber = !isNaN(Number(action.value));\n if (isNumber) {\n await new Promise(resolve => setTimeout(resolve, Number(action.value)));\n }\n break;\n }\n\n case 'avatarAnimate': {\n const riveService = RiveService.getInstance();\n const riveInstance = riveService.getRiveInstance();\n\n if (riveInstance && action.value) {\n riveInstance.play(action.value);\n }\n break;\n }\n\n default: {\n targetElement.style[action.action] = action.value;\n break;\n }\n }\n }\n }\n};\n\n// Function to parse actions string\nconst parseActions = (input: string): Array<{ actor: string; action: string; value: string }> => {\n const actions = [];\n if (!input) return actions;\n const actionStrings = input.split(';')?.map(action => action.trim());\n\n actionStrings.forEach(actionString => {\n if (actionString) {\n const [actorAction, value] = actionString.split('=').map(part => part.trim());\n const lastDotIndex = actorAction.lastIndexOf('.');\n if (lastDotIndex !== -1) {\n const actor = actorAction.substring(0, lastDotIndex).trim();\n const action = actorAction.substring(lastDotIndex + 1).trim();\n actions.push({ actor, action, value: value.replace(/['\"]/g, '') });\n }\n }\n });\n\n return actions;\n};\n\nconst matchStringPattern = (pattern: string, arr: string[]): boolean => {\n const patternGroups = pattern.split(',').map(group => group.trim());\n\n let arrIndex = 0;\n let options = new Set<string>();\n\n for (const group of patternGroups) {\n if (group.startsWith('(') && group.endsWith(')')) {\n // Inside parentheses: '|' acts like \"OR\" condition\n const choices = group\n .slice(1, -1)\n .split('|')\n .map(option => option.trim());\n\n const arrChoice = group\n .slice(1, -1)\n .split('|')\n .map(option => option.trim());\n\n if (arrIndex >= arrChoice.length) return false;\n if (!choices.includes(arrChoice[arrIndex])) return false;\n\n arrIndex++;\n } else if (group.includes('|')) {\n // Outside parentheses: '|' acts as optional order\n const choices = group.split('|').map(option => option.trim());\n\n for (const choice of choices) {\n options.add(choice);\n }\n } else {\n // Exact match required\n if (arrIndex >= arr.length || arr[arrIndex] !== group) return false;\n\n arrIndex++;\n }\n }\n\n // Validate the optional ordered items against the remaining array elements\n while (arrIndex < arr.length) {\n if (!options.has(arr[arrIndex])) {\n return false;\n }\n options.delete(arr[arrIndex]);\n arrIndex++;\n }\n\n return arrIndex === arr.length;\n};\n\nconst countPatternWords = (pattern: string): number => {\n const patternGroups = pattern.split(',').map(group => group.trim());\n\n let wordCount = 0;\n\n for (const group of patternGroups) {\n if (group.startsWith('(') && group.endsWith(')')) {\n if (group.includes('|')) {\n wordCount += group.split('|').length;\n } else {\n wordCount += 1;\n }\n } else {\n wordCount += group.split('|').length;\n }\n }\n\n return wordCount;\n};\n\nasync function onActivityComplete(dragElement?: HTMLElement, dropElement?: HTMLElement) {\n const container = document.querySelector('#lido-container') as HTMLElement;\n if (!container) return;\n\n const isAllowOnlyCorrect = container.getAttribute('isAllowOnlyCorrect') === 'true';\n if (isAllowOnlyCorrect) {\n const isCorrect = dropElement['value'].includes(dragElement['value']);\n if (!isCorrect) {\n dragElement.style.transform = 'translate(0,0)';\n return;\n }\n }\n\n await executeActions(\"this.alignMatch='true'\", dropElement, dragElement);\n\n let dragScore = JSON.parse(localStorage.getItem(DragSelectedMapKey) ?? '{}');\n const tabindex = dropElement.getAttribute('tabindex');\n\n if (!dragScore[tabindex]) {\n dragScore[tabindex] = [];\n }\n\n dragScore[tabindex].push(dragElement['value']);\n\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(dragScore));\n\n const sortedKeys = Object.keys(dragScore).sort((a, b) => parseInt(a) - parseInt(b));\n\n const sortedValues = sortedKeys.reduce((acc, key) => {\n const values = dragScore[key];\n if (values.length > 1) {\n acc.push(`(${values.join('|')})`);\n } else {\n acc.push(values[0]);\n }\n return acc;\n }, []);\n\n localStorage.setItem(SelectedValuesKey, JSON.stringify(sortedValues));\n\n const allElements = document.querySelectorAll<HTMLElement>(\"[type='drop']\");\n allElements.forEach(otherElement => {\n const dropObject = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const storedTabIndexes = Object.keys(dropObject).map(Number);\n if (storedTabIndexes.includes(otherElement['tabIndex'])) {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = 'transparent'; // Reset background color\n } else {\n otherElement.style.border = ''; // Reset border\n otherElement.style.backgroundColor = ''; // Reset background color\n }\n });\n handleShowCheck();\n}\n\nconst storingEachActivityScore = (flag: boolean) => {\n if (flag) {\n gameScore.rightMoves += 1;\n } else {\n gameScore.wrongMoves += 1;\n }\n console.log('Right Moves : ', gameScore.rightMoves);\n console.log('Wrong Moves : ', gameScore.wrongMoves);\n};\n\nconst calculateScore = () => {\n const rightMoves = gameScore.rightMoves;\n const wrongMoves = gameScore.wrongMoves;\n let finalScore = Math.floor((rightMoves / (rightMoves + wrongMoves)) * 100);\n storeActivityScore(finalScore);\n gameScore.rightMoves = 0;\n gameScore.wrongMoves = 0;\n};\n\nconst storeActivityScore = (score: number) => {\n const appHome = document.querySelector('lido-home');\n if (!appHome) return;\n const index = Number(appHome.getAttribute('index') ?? 0);\n const totalIndex = Number(appHome.getAttribute('totalIndex') ?? 0);\n\n const activityScore = JSON.parse(localStorage.getItem(ActivityScoreKey) ?? '{}');\n const activityScoreKey = index.toString();\n activityScore[activityScoreKey] = score;\n\n //send Custom Event to parent\n // window.dispatchEvent(new CustomEvent(ActivityEndKey, { detail: { index: index, totalIndex: totalIndex, score: score } }));\n dispatchActivityEndEvent(index, totalIndex, score);\n\n localStorage.setItem(ActivityScoreKey, JSON.stringify(activityScore));\n if (totalIndex - 1 == index) {\n const scoresArray: number[] = Object.values(activityScore);\n const finalScore = scoresArray.reduce((acc, cur) => acc + cur, 0) / scoresArray.length;\n gameScore.finalScore = Math.floor(finalScore);\n console.log('Total Score : ', gameScore.finalScore);\n // window.dispatchEvent(new CustomEvent(LessonEndKey, { detail: { score: finalScore } }));\n dispatchLessonEndEvent(finalScore);\n localStorage.removeItem(ActivityScoreKey);\n }\n};\n\nconst handleShowCheck = () => {\n const container = document.querySelector('#lido-container') as HTMLElement;\n const objectiveString = container['objective'];\n const selectValues = localStorage.getItem(SelectedValuesKey) ?? '';\n\n const checkButton = document.querySelector('#lido-checkButton') as HTMLElement;\n\n if (!selectValues || countPatternWords(selectValues) !== countPatternWords(objectiveString)) {\n executeActions(\"this.addClass='lido-disable-check-button'\", checkButton);\n return;\n }\n\n const showCheck = container.getAttribute('showCheck') == 'true';\n\n if (showCheck) {\n checkButton.classList.remove('lido-disable-check-button');\n } else {\n validateObjectiveStatus();\n }\n};\n\nconst validateObjectiveStatus = async () => {\n const container = document.querySelector('#lido-container') as HTMLElement;\n if (!container) return;\n const objectiveString = container['objective'];\n const objectiveArray = JSON.parse(localStorage.getItem(SelectedValuesKey)) ?? [];\n const res = matchStringPattern(objectiveString, objectiveArray);\n\n if (res) {\n appendingDragElementsInDrop();\n const onCorrect = container.getAttribute('onCorrect');\n if (onCorrect) {\n await executeActions(onCorrect, container);\n }\n triggerNextContainer();\n } else {\n const onInCorrect = container.getAttribute('onInCorrect');\n await executeActions(onInCorrect, container);\n const isContinueOnCorrect = container.getAttribute('isContinueOnCorrect') === 'true';\n if (!isContinueOnCorrect) {\n triggerNextContainer();\n }\n }\n await calculateScore();\n};\n\nconst appendingDragElementsInDrop = () => {\n const dragItems = document.querySelectorAll(\"[type='drag']\");\n const dropItems = document.querySelectorAll(\"[type='drop']\");\n if (!dragItems || !dropItems) return;\n dropItems.forEach(drop => {\n dragItems.forEach(dragElement => {\n const drag = dragElement as HTMLElement;\n if (drop['value'].includes(drag['value'])) {\n drag.style.transform = 'translate(0,0)';\n drop.appendChild(drag);\n }\n });\n });\n};\n\nexport const triggerNextContainer = () => {\n AudioPlayer.getI().stop();\n // const event = new CustomEvent('nextContainer');\n console.log('🚀 ~ triggerNextContainer ~ event:', event);\n // window.dispatchEvent(event);\n dispatchNextContainerEvent();\n};\n\nexport const initEventsForElement = async (element: HTMLElement, type: string) => {\n const container = document.querySelector('#lido-container') as HTMLElement;\n if (!container) return;\n const onEntry = element.getAttribute('onEntry');\n await executeActions(onEntry, element);\n const canplay = container.getAttribute('canplay');\n if (canplay != null && canplay === 'false') return;\n switch (type) {\n case 'drag': {\n enableDraggingWithScaling(element);\n break;\n }\n case 'click': {\n addClickListenerForClickType(element);\n break;\n }\n case 'drop': {\n handleDropElement(element);\n break;\n }\n case 'slide': {\n slidingWithScaling(element);\n break;\n }\n default:\n break;\n }\n\n onTouchListenerForOnTouch(element);\n};\n\nfunction onTouchListenerForOnTouch(element: HTMLElement) {\n if (!element) return;\n const onTouch = element.getAttribute('onTouch');\n if (!onTouch) return;\n element.onclick = async () => {\n console.log('🚀 ~ element.onclick= ~ onTouch:', onTouch);\n if (!onTouch) return;\n await executeActions(onTouch, element);\n };\n}\n\nfunction addClickListenerForClickType(element: HTMLElement): void {\n element.style.cursor = 'pointer';\n if (!element) {\n console.error('No element provided.');\n return;\n }\n\n const onClick = async () => {\n AudioPlayer.getI().stop();\n const container = document.querySelector('#lido-container') as HTMLElement;\n const objective = container['objective'].split(',');\n const checkButton = document.querySelector('#lido-checkButton') as HTMLElement;\n const showCheck = container.getAttribute('showCheck') === 'true';\n\n if (element.getAttribute('id') == 'lido-checkButton') {\n checkButton.classList.add('lido-disable-check-button');\n await validateObjectiveStatus();\n return;\n }\n\n // element.style.border = '2px solid yellow';\n // element.style.boxShadow = '0px 0px 10px rgba(255, 255, 0, 0.7)';\n\n // element.style.transition = 'transform 0.2s ease, border 0.5s ease';\n // element.style.transform = 'scale(1.1)';\n\n // element.style.transform = 'scale(1)';\n // element.style.border = '';\n // element.style.boxShadow = '';\n\n const isActivated = element.classList.contains('lido-element-selected');\n let selectedValue = JSON.parse(localStorage.getItem(SelectedValuesKey)) || [];\n\n if (objective.length === 1) {\n localStorage.setItem(SelectedValuesKey, JSON.stringify([element['value']]));\n const isCorrect = objective.includes(element['value']);\n dispatchClickEvent(element, isCorrect);\n if (isCorrect) {\n const onCorrect = element.getAttribute('onCorrect');\n await executeActions(onCorrect, element);\n } else {\n const onInCorrect = element.getAttribute('onInCorrect');\n await executeActions(onInCorrect, element);\n // showWrongAnswerAnimation([element]);\n }\n storingEachActivityScore(isCorrect);\n handleShowCheck();\n return;\n }\n\n if (showCheck) {\n checkButton.classList.remove('lido-disable-check-button');\n }\n\n if (isActivated) {\n element.classList.remove('lido-element-selected');\n executeActions(element.getAttribute('onEntry'), element);\n\n selectedValue = selectedValue.filter(item => item != element['value']);\n localStorage.setItem(SelectedValuesKey, JSON.stringify(selectedValue));\n\n let multiOptionScore = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n const valueToRemove = element['value'];\n const keyToRemove = Object.keys(multiOptionScore).find(key => multiOptionScore[key].includes(valueToRemove));\n\n if (keyToRemove) {\n multiOptionScore[keyToRemove] = multiOptionScore[keyToRemove].filter(item => item !== valueToRemove);\n if (multiOptionScore[keyToRemove].length === 0) {\n delete multiOptionScore[keyToRemove];\n }\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(multiOptionScore));\n const sortedKeys = Object.keys(multiOptionScore).sort((a, b) => parseInt(a) - parseInt(b));\n const sortedValues = sortedKeys.reduce((acc, key) => acc.concat(multiOptionScore[key]), []);\n localStorage.setItem(SelectedValuesKey, JSON.stringify(sortedValues));\n }\n\n if (showCheck && selectedValue.length === 0) {\n checkButton.classList.add('lido-disable-check-button');\n }\n return;\n } else {\n element.classList.add('lido-element-selected');\n const valueToFind = element['value'];\n const key = Object.keys(objective).find(key => objective[key] === valueToFind);\n let multiOptionScore = JSON.parse(localStorage.getItem(DragSelectedMapKey)) || {};\n if (!key) {\n multiOptionScore[objective.length + selectedValue.length] = [valueToFind];\n } else {\n multiOptionScore[key] = [valueToFind];\n }\n localStorage.setItem(DragSelectedMapKey, JSON.stringify(multiOptionScore));\n const sortedKeys = Object.keys(multiOptionScore).sort((a, b) => parseInt(a) - parseInt(b));\n const sortedValues = sortedKeys.reduce((acc, key) => acc.concat(multiOptionScore[key]), []);\n localStorage.setItem(SelectedValuesKey, JSON.stringify(sortedValues));\n\n const isCorrect = objective.includes(element['value']);\n dispatchClickEvent(element, isCorrect);\n if (isCorrect) {\n const onCorrect = element.getAttribute('onCorrect');\n await executeActions(onCorrect, element);\n } else {\n const onInCorrect = element.getAttribute('onInCorrect');\n await executeActions(onInCorrect, element);\n // showWrongAnswerAnimation([element]);\n }\n storingEachActivityScore(isCorrect);\n }\n\n if (!showCheck && countPatternWords(objective) === countPatternWords(selectedValue)) {\n validateObjectiveStatus();\n }\n };\n element.addEventListener('click', onClick);\n}\n\nexport function showWrongAnswerAnimation(elements: HTMLElement[]): void {\n const styleId = '#wrong-answer-animation-style';\n\n executeActions(\"tryAgain.speak='true'\", document.querySelector('#tryAgain'));\n\n // Check if the style is already added, if not, add it\n if (!document.querySelector(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.innerHTML = `\n @keyframes enhanced-shake {\n 0% { left: 0; }\n 10% { left: -8px; }\n 20% { left: 8px; }\n 30% { left: -8px; }\n 40% { left: 8px; }\n 50% { left: -6px; }\n 60% { left: 6px; }\n 70% { left: -4px; }\n 80% { left: 4px; }\n 90% { left: -2px; }\n 100% { left: 0; }\n }\n\n \n .wrong-answer {\n position: relative; /* Enable relative positioning to move the element */\n animation: enhanced-shake 0.6s cubic-bezier(0.36, 0.07, 0.19, 0.97);\n background-color: #ffdddd; /* Flash red background to indicate wrong answer */\n box-shadow: 0 0 10px rgba(255, 0, 0, 0.5); /* Subtle red shadow */\n\n border: 4px solid red;\n }\n\n \n `;\n\n document.head.appendChild(style);\n }\n\n elements.forEach(element => {\n // Add the class to trigger the animation\n element.classList.add('wrong-answer');\n\n // Remove the class after the animation ends to reset the element\n element.addEventListener(\n 'animationend',\n () => {\n element.classList.remove('wrong-answer');\n },\n { once: true },\n );\n });\n}\n\nfunction handleDropElement(element: HTMLElement): void {\n element.onclick = () => {\n onClickDropOrDragElement(element, 'drop');\n };\n}\n\nasync function onClickDropOrDragElement(element: HTMLElement, type: 'drop' | 'drag'): Promise<void> {\n // Remove the highlight class from elements matching the selector\n const highlightedElements = document.querySelectorAll(`[type='${type}']`);\n\n highlightedElements.forEach(el => {\n removeHighlight(el as HTMLElement);\n });\n\n // Dynamically create the highlight class if it doesn't exist\n if (!document.querySelector('#dynamic-highlight-style')) {\n const style = document.createElement('style');\n style.id = 'dynamic-highlight-style';\n style.innerHTML = `\n .highlight {\n border: 4px solid #e74c3c; /* Thicker red border for more visibility */\n border-radius: 12px; /* Larger rounded corners */\n background-color: rgba(231, 76, 60, 0.3); /* Stronger, more noticeable background */\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2), 0 12px 40px rgba(0, 0, 0, 0.2); /* Stronger shadow */\n outline: 4px solid rgba(231, 76, 60, 0.6); /* Glow effect */\n }\n `;\n\n document.head.appendChild(style);\n }\n\n element?.classList.add('highlight');\n element.ariaPressed = 'true';\n\n const selectedDropElement: HTMLElement = type === 'drop' ? element : document.querySelector(\"[type='drop'].highlight\");\n const selectedDragElement: HTMLElement = type === 'drag' ? element : document.querySelector(\"[type='drag'].highlight\");\n\n if (selectedDropElement && selectedDragElement) {\n // Add a transition for a smooth, slower movement\n (selectedDragElement as HTMLElement).style.transition = 'transform 0.5s ease'; // 0.5s for a slower move\n\n // Reset the transform of the drag element before calculating the new position\n (selectedDragElement as HTMLElement).style.transform = '';\n const container = document.querySelector('#lido-container') as HTMLElement;\n\n const containerScale = getElementScale(container);\n console.log('🚀 ~ onClickDropOrDragElement ~ containerScale:', containerScale);\n\n // Get the positions of the drop and drag elements\n const dropRect = selectedDropElement.getBoundingClientRect();\n const dragRect = selectedDragElement.getBoundingClientRect();\n\n // Calculate the difference in positions\n const translateX = (dropRect.left - dragRect.left) / containerScale;\n const translateY = (dropRect.top - dragRect.top) / containerScale;\n\n // Move the drag element to the drop position\n selectedDragElement.style.transform = `translate(${translateX}px, ${translateY}px)`;\n\n // Remove highlights after moving the element\n const allElements = document.querySelectorAll(`*`);\n allElements.forEach(el => {\n removeHighlight(el as HTMLElement);\n });\n\n // await new Promise(resolve => setTimeout(resolve, 500));\n await onElementDropComplete(selectedDragElement, selectedDropElement);\n // await new Promise(resolve => setTimeout(resolve, 500));\n // selectedDragElement.style.transform = 'translate(0px, 0px)';\n }\n}\n\nfunction removeHighlight(element: HTMLElement): void {\n element.classList.remove('highlight');\n element.ariaPressed = 'false';\n}\n\n// Function to highlight the speaking element\nexport function highlightSpeakingElement(element: HTMLElement): void {\n if (!element) return;\n\n // Add a custom class for highlighting\n element.classList.add('speaking-highlight');\n\n // Inject keyframe animation and class styles into the document's head if it doesn't already exist\n const styleId = '#speaking-highlight-style';\n if (!document.querySelector(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.innerHTML = `\n .speaking-highlight {\n box-shadow: 0 0 20px 10px rgba(255, 165, 0, 0.9) !important; /* Stronger orange glow effect */\n // border: 3px solid green !important;\n transition: box-shadow 0.5s ease-in-out, transform 0.5s ease-in-out;\n transform: scale(1.05); /* Subtle scale effect to pop the element */\n animation: pulseEffect 1.5s infinite; /* Pulsing animation */\n }\n\n @keyframes pulseEffect {\n 0% {\n box-shadow: 0 0 20px 10px rgba(255, 165, 0, 0.9);\n transform: scale(1.05);\n }\n 50% {\n box-shadow: 0 0 30px 15px rgba(255, 165, 0, 1);\n transform: scale(1.1);\n }\n 100% {\n box-shadow: 0 0 20px 10px rgba(255, 165, 0, 0.9);\n transform: scale(1.05);\n }\n }\n `;\n document.head.appendChild(style);\n }\n}\n\n// Function to stop highlighting\nexport function stopHighlightForSpeakingElement(element: HTMLElement): void {\n if (!element) return;\n\n // Remove the custom class for highlighting\n element.classList.remove('speaking-highlight');\n\n // Remove inline styles\n // element.style.boxShadow = '';\n // element.style.border = '';\n}\n\nexport function convertUrlToRelative(url: string): string {\n const container = document.querySelector('#lido-container') as HTMLElement;\n const baseUrl = container.getAttribute('baseUrl');\n\n if (url.startsWith('http')) {\n return url;\n } else if (baseUrl) {\n return baseUrl + url;\n } else {\n return getAssetPath(url);\n }\n}\n\n/**\n * Asynchronously speaks the given text using the browser's text-to-speech API.\n * Returns true if speech is completed successfully, false otherwise.\n *\n * @param text The text to be spoken.\n * @returns A Promise that resolves to true if speech is successful, or false if an error occurs or speech synthesis is not supported.\n */\nexport async function speakText(text: string, targetElement?: HTMLElement): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n if (!('speechSynthesis' in window)) {\n reject(new Error('Speech synthesis is not supported in this browser.'));\n return;\n }\n\n const synth = window.speechSynthesis;\n\n setTimeout(() => {\n const utterance = new SpeechSynthesisUtterance(text);\n\n utterance.onend = () => {\n resolve(true); // Resolve when speech is completed\n };\n synth.speak(utterance);\n }, 50);\n });\n}\n\nexport function handlingChildElements(element: HTMLElement, minLength: number, maxLength: number, currentLength: number, displayStyle: string) {\n if (currentLength === undefined) return;\n\n const children = Array.from(element.children);\n let allowedLength = currentLength;\n\n if (minLength && currentLength < minLength) {\n allowedLength = minLength;\n }\n if (maxLength && currentLength > maxLength) {\n allowedLength = maxLength;\n }\n\n children.forEach((child, index) => {\n (child as HTMLElement).style.display = index < allowedLength ? displayStyle : 'none';\n });\n}\n\nexport const parseProp = (propValue: string, orientation: string) => {\n if (!propValue || !propValue.includes(',')) {\n return propValue;\n }\n\n const parsedValues = propValue.split(',').reduce((acc, pair) => {\n const [key, value] = pair.split('.');\n acc[key.trim()] = value.trim();\n return acc;\n }, {} as Record<string, string>);\n\n return parsedValues[orientation] || '';\n};\n"],"version":3}
@@ -12,7 +12,10 @@ export class AudioPlayer {
12
12
  return AudioPlayer.instance;
13
13
  }
14
14
  stop() {
15
- window.speechSynthesis.cancel();
15
+ //check if speechSynthesis is supported
16
+ if (window === null || window === void 0 ? void 0 : window.speechSynthesis) {
17
+ window.speechSynthesis.cancel();
18
+ }
16
19
  this.audioElement.pause();
17
20
  this.audioElement.currentTime = 0;
18
21
  this.audioElement.src = ''; // Clear source to prevent replaying old audio
@@ -1 +1 @@
1
- {"version":3,"file":"audioPlayer.js","sourceRoot":"","sources":["../../src/utils/audioPlayer.ts"],"names":[],"mappings":"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","sourcesContent":["import { convertUrlToRelative, highlightSpeakingElement, stopHighlightForSpeakingElement, speakText } from './utils';\n\nexport class AudioPlayer {\n private static instance: AudioPlayer;\n private audioElement: HTMLAudioElement;\n\n private constructor() {\n this.audioElement = document.createElement('audio');\n this.audioElement.id = 'audio';\n document.body.appendChild(this.audioElement);\n }\n\n public static getI(): AudioPlayer {\n if (!AudioPlayer.instance) {\n AudioPlayer.instance = new AudioPlayer();\n }\n return AudioPlayer.instance;\n }\n\n public stop() {\n window.speechSynthesis.cancel();\n this.audioElement.pause();\n this.audioElement.currentTime = 0;\n this.audioElement.src = ''; // Clear source to prevent replaying old audio\n\n const highlightedElements = document.querySelectorAll('.speaking-highlight');\n highlightedElements.forEach(element => stopHighlightForSpeakingElement(element as HTMLElement));\n }\n\n public async play(targetElement: HTMLElement) {\n this.stop();\n\n let audioUrl = targetElement.getAttribute('audio') || '';\n\n if (!audioUrl) {\n const childElements = targetElement.children;\n for (let i = 0; i < childElements.length; i++) {\n const childAudioUrl = childElements[i].getAttribute('audio');\n if (childAudioUrl) {\n audioUrl = childAudioUrl;\n }\n }\n }\n\n if (audioUrl) {\n audioUrl = convertUrlToRelative(audioUrl);\n this.audioElement.src = audioUrl;\n console.log('🚀 Playing audio:', this.audioElement.src);\n\n try {\n await this.audioElement.play();\n highlightSpeakingElement(targetElement);\n\n await new Promise<void>(resolve => {\n this.audioElement.onended = () => {\n stopHighlightForSpeakingElement(targetElement);\n resolve();\n };\n });\n } catch (error) {\n console.log('🚀 Audio play error:', error);\n }\n } \n // If no audio, use text-to-speech\n else if (targetElement.textContent) {\n try {\n highlightSpeakingElement(targetElement);\n await speakText(targetElement.textContent, targetElement);\n stopHighlightForSpeakingElement(targetElement);\n } catch (error) {\n console.log('🚀 TTS Error:', error);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"audioPlayer.js","sourceRoot":"","sources":["../../src/utils/audioPlayer.ts"],"names":[],"mappings":"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","sourcesContent":["import { convertUrlToRelative, highlightSpeakingElement, stopHighlightForSpeakingElement, speakText } from './utils';\n\nexport class AudioPlayer {\n private static instance: AudioPlayer;\n private audioElement: HTMLAudioElement;\n\n private constructor() {\n this.audioElement = document.createElement('audio');\n this.audioElement.id = 'audio';\n document.body.appendChild(this.audioElement);\n }\n\n public static getI(): AudioPlayer {\n if (!AudioPlayer.instance) {\n AudioPlayer.instance = new AudioPlayer();\n }\n return AudioPlayer.instance;\n }\n\n public stop() {\n //check if speechSynthesis is supported\n if (window?.speechSynthesis) {\n window.speechSynthesis.cancel();\n }\n this.audioElement.pause();\n this.audioElement.currentTime = 0;\n this.audioElement.src = ''; // Clear source to prevent replaying old audio\n\n const highlightedElements = document.querySelectorAll('.speaking-highlight');\n highlightedElements.forEach(element => stopHighlightForSpeakingElement(element as HTMLElement));\n }\n\n public async play(targetElement: HTMLElement) {\n this.stop();\n\n let audioUrl = targetElement.getAttribute('audio') || '';\n\n if (!audioUrl) {\n const childElements = targetElement.children;\n for (let i = 0; i < childElements.length; i++) {\n const childAudioUrl = childElements[i].getAttribute('audio');\n if (childAudioUrl) {\n audioUrl = childAudioUrl;\n }\n }\n }\n\n if (audioUrl) {\n audioUrl = convertUrlToRelative(audioUrl);\n this.audioElement.src = audioUrl;\n console.log('🚀 Playing audio:', this.audioElement.src);\n\n try {\n await this.audioElement.play();\n highlightSpeakingElement(targetElement);\n\n await new Promise<void>(resolve => {\n this.audioElement.onended = () => {\n stopHighlightForSpeakingElement(targetElement);\n resolve();\n };\n });\n } catch (error) {\n console.log('🚀 Audio play error:', error);\n }\n }\n // If no audio, use text-to-speech\n else if (targetElement.textContent) {\n try {\n highlightSpeakingElement(targetElement);\n await speakText(targetElement.textContent, targetElement);\n stopHighlightForSpeakingElement(targetElement);\n } catch (error) {\n console.log('🚀 TTS Error:', error);\n }\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  export { g as getAssetPath, s as setAssetPath, a as setNonce, b as setPlatformOptions } from './p-44db2553.js';
2
- export { f as format } from './p-7b4c4606.js';
2
+ export { f as format } from './p-57c32539.js';
3
3
 
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { L as LidoAvatar$1, d as defineCustomElement$1 } from './p-185d3021.js';
1
+ import { L as LidoAvatar$1, d as defineCustomElement$1 } from './p-05af960d.js';
2
2
 
3
3
  const LidoAvatar = LidoAvatar$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoCol$1, d as defineCustomElement$1 } from './p-2c6af93f.js';
1
+ import { L as LidoCol$1, d as defineCustomElement$1 } from './p-48e9e250.js';
2
2
 
3
3
  const LidoCol = LidoCol$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoContainer$1, d as defineCustomElement$1 } from './p-a88c0bb4.js';
1
+ import { L as LidoContainer$1, d as defineCustomElement$1 } from './p-5d215c12.js';
2
2
 
3
3
  const LidoContainer = LidoContainer$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoHome$1, d as defineCustomElement$1 } from './p-b8564fe1.js';
1
+ import { L as LidoHome$1, d as defineCustomElement$1 } from './p-fc7ef390.js';
2
2
 
3
3
  const LidoHome = LidoHome$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoImage$1, d as defineCustomElement$1 } from './p-95cfda5b.js';
1
+ import { L as LidoImage$1, d as defineCustomElement$1 } from './p-10530dff.js';
2
2
 
3
3
  const LidoImage = LidoImage$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoPos$1, d as defineCustomElement$1 } from './p-21c7365d.js';
1
+ import { L as LidoPos$1, d as defineCustomElement$1 } from './p-522c0ec0.js';
2
2
 
3
3
  const LidoPos = LidoPos$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,16 +1,16 @@
1
1
  import { p as proxyCustomElement, H, g as getAssetPath, h } from './p-44db2553.js';
2
- import { d as defineCustomElement$d } from './p-185d3021.js';
3
- import { d as defineCustomElement$c } from './p-2c6af93f.js';
4
- import { d as defineCustomElement$b } from './p-a88c0bb4.js';
5
- import { d as defineCustomElement$a } from './p-b8564fe1.js';
6
- import { d as defineCustomElement$9 } from './p-95cfda5b.js';
7
- import { d as defineCustomElement$8 } from './p-21c7365d.js';
2
+ import { d as defineCustomElement$d } from './p-05af960d.js';
3
+ import { d as defineCustomElement$c } from './p-48e9e250.js';
4
+ import { d as defineCustomElement$b } from './p-5d215c12.js';
5
+ import { d as defineCustomElement$a } from './p-fc7ef390.js';
6
+ import { d as defineCustomElement$9 } from './p-10530dff.js';
7
+ import { d as defineCustomElement$8 } from './p-522c0ec0.js';
8
8
  import { d as defineCustomElement$7 } from './p-3a3a5d05.js';
9
- import { d as defineCustomElement$6 } from './p-24527345.js';
10
- import { d as defineCustomElement$5 } from './p-e90137c1.js';
11
- import { d as defineCustomElement$4 } from './p-3bf3a2f8.js';
12
- import { d as defineCustomElement$3 } from './p-3230edf7.js';
13
- import { d as defineCustomElement$2 } from './p-5465821b.js';
9
+ import { d as defineCustomElement$6 } from './p-5e0011f1.js';
10
+ import { d as defineCustomElement$5 } from './p-0e6c1da3.js';
11
+ import { d as defineCustomElement$4 } from './p-526fd8d3.js';
12
+ import { d as defineCustomElement$3 } from './p-27c1a9f0.js';
13
+ import { d as defineCustomElement$2 } from './p-cba45af3.js';
14
14
 
15
15
  const LidoRoot$1 = /*@__PURE__*/ proxyCustomElement(class LidoRoot extends H {
16
16
  constructor() {
@@ -1,4 +1,4 @@
1
- import { L as LidoRow$1, d as defineCustomElement$1 } from './p-24527345.js';
1
+ import { L as LidoRow$1, d as defineCustomElement$1 } from './p-5e0011f1.js';
2
2
 
3
3
  const LidoRow = LidoRow$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoShape$1, d as defineCustomElement$1 } from './p-e90137c1.js';
1
+ import { L as LidoShape$1, d as defineCustomElement$1 } from './p-0e6c1da3.js';
2
2
 
3
3
  const LidoShape = LidoShape$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoText$1, d as defineCustomElement$1 } from './p-3bf3a2f8.js';
1
+ import { L as LidoText$1, d as defineCustomElement$1 } from './p-526fd8d3.js';
2
2
 
3
3
  const LidoText = LidoText$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoTrace$1, d as defineCustomElement$1 } from './p-3230edf7.js';
1
+ import { L as LidoTrace$1, d as defineCustomElement$1 } from './p-27c1a9f0.js';
2
2
 
3
3
  const LidoTrace = LidoTrace$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { L as LidoWrap$1, d as defineCustomElement$1 } from './p-5465821b.js';
1
+ import { L as LidoWrap$1, d as defineCustomElement$1 } from './p-cba45af3.js';
2
2
 
3
3
  const LidoWrap = LidoWrap$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, g as getAssetPath, h, c as Host } from './p-44db2553.js';
2
- import { i as initEventsForElement, R as RiveService } from './p-7b4c4606.js';
2
+ import { i as initEventsForElement, R as RiveService } from './p-57c32539.js';
3
3
 
4
4
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
5
 
@@ -6628,4 +6628,4 @@ defineCustomElement();
6628
6628
 
6629
6629
  export { LidoAvatar as L, defineCustomElement as d };
6630
6630
 
6631
- //# sourceMappingURL=p-185d3021.js.map
6631
+ //# sourceMappingURL=p-05af960d.js.map