taleem-player 1.0.0 → 1.0.2
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/README.md +11 -2
- package/dist/css/taleem.css +63 -0
- package/dist/taleem-player.esm.js +39 -4
- package/dist/taleem-player.umd.js +39 -4
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -100,15 +100,24 @@ player.renderAt(12.5);
|
|
|
100
100
|
|
|
101
101
|
## Utilities (Runtime-safe)
|
|
102
102
|
|
|
103
|
+
|
|
104
|
+
These **Utilities (Runtime-safe)** are exported :
|
|
105
|
+
|
|
103
106
|
```js
|
|
104
|
-
import {
|
|
107
|
+
import {
|
|
108
|
+
assignMockTimings,
|
|
109
|
+
resolveAssetPaths,
|
|
110
|
+
resolveBackground,
|
|
111
|
+
getDeckEndTime
|
|
112
|
+
} from "taleem-player";
|
|
105
113
|
```
|
|
106
114
|
|
|
107
115
|
* `assignMockTimings(deck, seconds)`
|
|
108
116
|
* `resolveAssetPaths(deck, basePath)`
|
|
109
117
|
* `resolveBackground(deck, basePath)`
|
|
118
|
+
* `getDeckEndTime(deck)`
|
|
110
119
|
|
|
111
|
-
These helpers prepare decks for real usage.
|
|
120
|
+
These helpers prepare decks for real usage and runtime playback.
|
|
112
121
|
|
|
113
122
|
---
|
|
114
123
|
|
package/dist/css/taleem.css
CHANGED
|
@@ -344,4 +344,67 @@
|
|
|
344
344
|
.slide.table thead tr:has(th:empty) {
|
|
345
345
|
display: none;
|
|
346
346
|
}
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
/* -------------------------------
|
|
350
|
+
Corner Words Slide (4 Quadrants)
|
|
351
|
+
------------------------------- */
|
|
352
|
+
|
|
353
|
+
.slide.cornerWordsSlide {
|
|
354
|
+
position: relative;
|
|
355
|
+
width: 100%;
|
|
356
|
+
height: 100vh;
|
|
357
|
+
padding: 0;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* base card */
|
|
361
|
+
.cornerWordsSlide .corner-card {
|
|
362
|
+
position: absolute;
|
|
363
|
+
width: 45%;
|
|
364
|
+
height: 45%;
|
|
365
|
+
|
|
366
|
+
display: flex;
|
|
367
|
+
flex-direction: column;
|
|
368
|
+
justify-content: center;
|
|
369
|
+
align-items: center;
|
|
370
|
+
gap: 16px;
|
|
371
|
+
|
|
372
|
+
font-size: 4.2rem;
|
|
373
|
+
font-weight: 700;
|
|
374
|
+
letter-spacing: 0.02em;
|
|
375
|
+
text-align: center;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/* emoji / icon */
|
|
379
|
+
.cornerWordsSlide .corner-card .icon {
|
|
380
|
+
font-size: 5.2rem;
|
|
381
|
+
line-height: 1;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/* label text */
|
|
385
|
+
.cornerWordsSlide .corner-card .label {
|
|
386
|
+
font-size: 3.6rem;
|
|
387
|
+
font-weight: 600;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/* quadrants */
|
|
391
|
+
.cornerWordsSlide .corner-1 {
|
|
392
|
+
top: 0;
|
|
393
|
+
left: 0;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.cornerWordsSlide .corner-2 {
|
|
397
|
+
top: 0;
|
|
398
|
+
right: 0;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.cornerWordsSlide .corner-3 {
|
|
402
|
+
bottom: 0;
|
|
403
|
+
left: 0;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.cornerWordsSlide .corner-4 {
|
|
407
|
+
bottom: 0;
|
|
408
|
+
right: 0;
|
|
409
|
+
}
|
|
347
410
|
|
|
@@ -591,7 +591,7 @@ function getSlideTemplate(type) {
|
|
|
591
591
|
}
|
|
592
592
|
|
|
593
593
|
// src/engines/player/stage.js
|
|
594
|
-
function createStage(mount) {
|
|
594
|
+
function createStage(mount, background = {}) {
|
|
595
595
|
if (!mount) throw new Error("taleem-player: mount is required");
|
|
596
596
|
const root = typeof mount === "string" ? document.querySelector(mount) : mount;
|
|
597
597
|
if (!root) throw new Error("taleem-player: mount element not found");
|
|
@@ -601,15 +601,41 @@ function createStage(mount) {
|
|
|
601
601
|
stage.style.position = "relative";
|
|
602
602
|
stage.style.width = "100%";
|
|
603
603
|
stage.style.height = "100%";
|
|
604
|
+
stage.style.overflow = "hidden";
|
|
605
|
+
const bgLayer = document.createElement("div");
|
|
606
|
+
bgLayer.className = "taleem-player-bg";
|
|
607
|
+
bgLayer.style.position = "absolute";
|
|
608
|
+
bgLayer.style.inset = "0";
|
|
609
|
+
bgLayer.style.zIndex = "0";
|
|
610
|
+
bgLayer.style.backgroundRepeat = "no-repeat";
|
|
611
|
+
bgLayer.style.backgroundSize = "cover";
|
|
612
|
+
bgLayer.style.backgroundPosition = "center";
|
|
613
|
+
if (background.backgroundColor) {
|
|
614
|
+
bgLayer.style.backgroundColor = background.backgroundColor;
|
|
615
|
+
}
|
|
616
|
+
if (background.backgroundImage) {
|
|
617
|
+
bgLayer.style.backgroundImage = `url("${background.backgroundImage}")`;
|
|
618
|
+
}
|
|
619
|
+
if (typeof background.backgroundImageOpacity === "number" && background.backgroundImageOpacity < 1) {
|
|
620
|
+
bgLayer.style.opacity = String(background.backgroundImageOpacity);
|
|
621
|
+
}
|
|
622
|
+
const slideLayer = document.createElement("div");
|
|
623
|
+
slideLayer.className = "taleem-player-slides";
|
|
624
|
+
slideLayer.style.position = "relative";
|
|
625
|
+
slideLayer.style.zIndex = "1";
|
|
626
|
+
slideLayer.style.width = "100%";
|
|
627
|
+
slideLayer.style.height = "100%";
|
|
628
|
+
stage.appendChild(bgLayer);
|
|
629
|
+
stage.appendChild(slideLayer);
|
|
604
630
|
root.appendChild(stage);
|
|
605
631
|
function clear() {
|
|
606
|
-
|
|
632
|
+
slideLayer.innerHTML = "";
|
|
607
633
|
}
|
|
608
634
|
function destroy() {
|
|
609
635
|
root.innerHTML = "";
|
|
610
636
|
}
|
|
611
637
|
return {
|
|
612
|
-
el:
|
|
638
|
+
el: slideLayer,
|
|
613
639
|
clear,
|
|
614
640
|
destroy
|
|
615
641
|
};
|
|
@@ -617,7 +643,7 @@ function createStage(mount) {
|
|
|
617
643
|
|
|
618
644
|
// src/engines/player/player.js
|
|
619
645
|
function createTaleemPlayer({ mount, deck }) {
|
|
620
|
-
const stage = createStage(mount);
|
|
646
|
+
const stage = createStage(mount, deck.background);
|
|
621
647
|
let lastSlide = null;
|
|
622
648
|
let lastRenderedKey = null;
|
|
623
649
|
function getSlideAtTime(deck2, time) {
|
|
@@ -785,10 +811,19 @@ function resolveBackground2(deck, ASSET_BASE) {
|
|
|
785
811
|
}
|
|
786
812
|
return deck;
|
|
787
813
|
}
|
|
814
|
+
|
|
815
|
+
// src/utils/getDeckEndTime.js
|
|
816
|
+
function getDeckEndTime(deck) {
|
|
817
|
+
if (!deck || !deck.deck || deck.deck.length === 0) {
|
|
818
|
+
return 0;
|
|
819
|
+
}
|
|
820
|
+
return deck.deck[deck.deck.length - 1].end;
|
|
821
|
+
}
|
|
788
822
|
export {
|
|
789
823
|
assignMockTimings,
|
|
790
824
|
createTaleemBrowser,
|
|
791
825
|
createTaleemPlayer,
|
|
826
|
+
getDeckEndTime,
|
|
792
827
|
resolveAssetPaths,
|
|
793
828
|
resolveBackground2 as resolveBackground
|
|
794
829
|
};
|
|
@@ -23,6 +23,7 @@ var TaleemPlayer = (() => {
|
|
|
23
23
|
assignMockTimings: () => assignMockTimings,
|
|
24
24
|
createTaleemBrowser: () => createTaleemBrowser,
|
|
25
25
|
createTaleemPlayer: () => createTaleemPlayer,
|
|
26
|
+
getDeckEndTime: () => getDeckEndTime,
|
|
26
27
|
resolveAssetPaths: () => resolveAssetPaths,
|
|
27
28
|
resolveBackground: () => resolveBackground2
|
|
28
29
|
});
|
|
@@ -620,7 +621,7 @@ var TaleemPlayer = (() => {
|
|
|
620
621
|
}
|
|
621
622
|
|
|
622
623
|
// src/engines/player/stage.js
|
|
623
|
-
function createStage(mount) {
|
|
624
|
+
function createStage(mount, background = {}) {
|
|
624
625
|
if (!mount) throw new Error("taleem-player: mount is required");
|
|
625
626
|
const root = typeof mount === "string" ? document.querySelector(mount) : mount;
|
|
626
627
|
if (!root) throw new Error("taleem-player: mount element not found");
|
|
@@ -630,15 +631,41 @@ var TaleemPlayer = (() => {
|
|
|
630
631
|
stage.style.position = "relative";
|
|
631
632
|
stage.style.width = "100%";
|
|
632
633
|
stage.style.height = "100%";
|
|
634
|
+
stage.style.overflow = "hidden";
|
|
635
|
+
const bgLayer = document.createElement("div");
|
|
636
|
+
bgLayer.className = "taleem-player-bg";
|
|
637
|
+
bgLayer.style.position = "absolute";
|
|
638
|
+
bgLayer.style.inset = "0";
|
|
639
|
+
bgLayer.style.zIndex = "0";
|
|
640
|
+
bgLayer.style.backgroundRepeat = "no-repeat";
|
|
641
|
+
bgLayer.style.backgroundSize = "cover";
|
|
642
|
+
bgLayer.style.backgroundPosition = "center";
|
|
643
|
+
if (background.backgroundColor) {
|
|
644
|
+
bgLayer.style.backgroundColor = background.backgroundColor;
|
|
645
|
+
}
|
|
646
|
+
if (background.backgroundImage) {
|
|
647
|
+
bgLayer.style.backgroundImage = `url("${background.backgroundImage}")`;
|
|
648
|
+
}
|
|
649
|
+
if (typeof background.backgroundImageOpacity === "number" && background.backgroundImageOpacity < 1) {
|
|
650
|
+
bgLayer.style.opacity = String(background.backgroundImageOpacity);
|
|
651
|
+
}
|
|
652
|
+
const slideLayer = document.createElement("div");
|
|
653
|
+
slideLayer.className = "taleem-player-slides";
|
|
654
|
+
slideLayer.style.position = "relative";
|
|
655
|
+
slideLayer.style.zIndex = "1";
|
|
656
|
+
slideLayer.style.width = "100%";
|
|
657
|
+
slideLayer.style.height = "100%";
|
|
658
|
+
stage.appendChild(bgLayer);
|
|
659
|
+
stage.appendChild(slideLayer);
|
|
633
660
|
root.appendChild(stage);
|
|
634
661
|
function clear() {
|
|
635
|
-
|
|
662
|
+
slideLayer.innerHTML = "";
|
|
636
663
|
}
|
|
637
664
|
function destroy() {
|
|
638
665
|
root.innerHTML = "";
|
|
639
666
|
}
|
|
640
667
|
return {
|
|
641
|
-
el:
|
|
668
|
+
el: slideLayer,
|
|
642
669
|
clear,
|
|
643
670
|
destroy
|
|
644
671
|
};
|
|
@@ -646,7 +673,7 @@ var TaleemPlayer = (() => {
|
|
|
646
673
|
|
|
647
674
|
// src/engines/player/player.js
|
|
648
675
|
function createTaleemPlayer({ mount, deck }) {
|
|
649
|
-
const stage = createStage(mount);
|
|
676
|
+
const stage = createStage(mount, deck.background);
|
|
650
677
|
let lastSlide = null;
|
|
651
678
|
let lastRenderedKey = null;
|
|
652
679
|
function getSlideAtTime(deck2, time) {
|
|
@@ -814,5 +841,13 @@ var TaleemPlayer = (() => {
|
|
|
814
841
|
}
|
|
815
842
|
return deck;
|
|
816
843
|
}
|
|
844
|
+
|
|
845
|
+
// src/utils/getDeckEndTime.js
|
|
846
|
+
function getDeckEndTime(deck) {
|
|
847
|
+
if (!deck || !deck.deck || deck.deck.length === 0) {
|
|
848
|
+
return 0;
|
|
849
|
+
}
|
|
850
|
+
return deck.deck[deck.deck.length - 1].end;
|
|
851
|
+
}
|
|
817
852
|
return __toCommonJS(index_exports);
|
|
818
853
|
})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taleem-player",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/taleem-player.umd.js",
|
|
6
6
|
"module": "./dist/taleem-player.esm.js",
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"./validate": {
|
|
13
13
|
"import": "./dist/validation/validateDeckV1.js"
|
|
14
14
|
},
|
|
15
|
-
|
|
16
15
|
"./schema": {
|
|
17
16
|
"import": "./dist/validation/zodDeckV1.js"
|
|
18
17
|
},
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
},
|
|
31
30
|
"dependencies": {
|
|
32
31
|
"taleem-core": "^1.4.3",
|
|
33
|
-
"taleem-slides": "
|
|
32
|
+
"taleem-slides": "file:../taleem-slides"
|
|
34
33
|
},
|
|
35
34
|
"devDependencies": {
|
|
36
35
|
"esbuild": "^0.27.2",
|