Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
644 commits
Select commit Hold shift + click to select a range
d8a2b45
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 18, 2024
da52c0b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 23, 2024
d8f24b1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 24, 2024
cb1c91b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 29, 2024
969e4c4
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 31, 2024
e3b36c6
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 1, 2024
3258cb6
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 2, 2024
faef082
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 5, 2024
e49d098
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 7, 2024
c61b175
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 13, 2024
b181bb2
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 15, 2024
d2c6696
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 19, 2024
016ebb3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 22, 2024
ecca26e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 27, 2024
1a67d33
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 28, 2024
9de5f44
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 1, 2024
2a8eb4b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 7, 2024
c34f403
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 12, 2024
c4d879b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 13, 2024
f0f8ee8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 19, 2024
542c2c8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 20, 2024
6e47c1e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 21, 2024
c656b05
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 27, 2024
be7c5fe
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 11, 2024
77631b3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 17, 2024
a21227a
MER-3138
dtiwarATS Apr 17, 2024
f1b700f
Update LessonFinishedDialog.tsx
dtiwarATS Apr 17, 2024
3d94d3d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 18, 2024
be8df0d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 19, 2024
5860cfb
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 22, 2024
319854d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 23, 2024
96a498c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 24, 2024
6817d94
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 25, 2024
d6c90f0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 26, 2024
c7dd19d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 2, 2024
722d342
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 3, 2024
4551d33
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 6, 2024
ff2cea0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 8, 2024
76bec34
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 10, 2024
6d605d4
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 13, 2024
367ad3d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 14, 2024
4d26cd0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 15, 2024
3991502
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 17, 2024
53bf1ad
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 20, 2024
3f2feb1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 22, 2024
c8c76ec
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 24, 2024
bffba11
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 27, 2024
1485f8b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 3, 2024
7fbc613
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 4, 2024
d97c7c8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 5, 2024
91c4cf3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 6, 2024
d661c38
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 7, 2024
dec9a58
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 12, 2024
f81fae5
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 13, 2024
28e0c5c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 14, 2024
8d91e86
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 17, 2024
19da582
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 18, 2024
ca3ba96
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 24, 2024
e81f286
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 27, 2024
b4249cb
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 11, 2024
e2b5d88
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 15, 2024
4b9779a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 18, 2024
d8e4898
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 22, 2024
cb29dba
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 23, 2024
15e26ab
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 25, 2024
d1d57c5
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 30, 2024
e13273f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 2, 2024
54824af
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 5, 2024
d7e9cb1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 14, 2024
db8d94e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 20, 2024
907b3a1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 3, 2024
79584ec
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 9, 2024
26262c5
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 10, 2024
2c8baab
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 11, 2024
b34717f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 16, 2024
d69cf74
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 20, 2024
a98163d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 25, 2024
45faee0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 30, 2024
8d28c56
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 1, 2024
edc985e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 4, 2024
42ff4ee
MER-3369 | MER-3414 | MER-3417
dtiwarATS Oct 4, 2024
4640545
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 8, 2024
df86a9d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 10, 2024
7d6f575
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 16, 2024
2f6ae4f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 21, 2024
8c09278
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 22, 2024
514a752
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 23, 2024
5ed8677
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 28, 2024
34f6825
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 29, 2024
6d10327
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 31, 2024
f5c0e37
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 4, 2024
b3ffdee
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 5, 2024
fefd7c8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 6, 2024
706b11e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 8, 2024
f67d6f1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 11, 2024
7ab913e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 12, 2024
cba225a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 13, 2024
c5adc28
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 14, 2024
f759179
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 19, 2024
ec61f81
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 20, 2024
6bfd077
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 21, 2024
6c430d4
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 26, 2024
8c18d83
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 28, 2024
c5391a2
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 29, 2024
dcd9c34
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 2, 2024
08018ab
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 3, 2024
3f00b0f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 5, 2024
d690cb0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 6, 2024
af57342
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 10, 2024
d04ed7a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 11, 2024
d97c589
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 12, 2024
af98bf8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 13, 2024
c4cc85f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 16, 2024
d0f482a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 20, 2024
15c680d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 23, 2024
d09b899
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 26, 2024
9e95f07
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 9, 2025
5547c81
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 10, 2025
9e8b333
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 14, 2025
75d14d9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 17, 2025
b48149f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 20, 2025
c04ec0a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 22, 2025
128b16b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 27, 2025
bb069fa
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 29, 2025
4419aba
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 30, 2025
9a0b218
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 3, 2025
343fa49
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 12, 2025
e0aa5de
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 13, 2025
846c2c9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 14, 2025
ff74f88
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 18, 2025
5a2bb74
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 20, 2025
9c84c93
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 21, 2025
94b074f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 24, 2025
69e3e7b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 28, 2025
161d3af
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 4, 2025
48eef82
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 5, 2025
4d919fe
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 6, 2025
32add68
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 10, 2025
c9982fc
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 19, 2025
c31aa20
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 24, 2025
15fe245
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 4, 2025
3d3c143
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 9, 2025
592de9b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 11, 2025
6c32bf9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 14, 2025
133ee07
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 22, 2025
778a89e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 23, 2025
9b31602
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 25, 2025
a818d2c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 28, 2025
ff81463
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 29, 2025
3b7d19d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 7, 2025
26cd09d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 8, 2025
95c3b4c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 9, 2025
5de41e1
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 19, 2025
9341a43
Merge branch 'Simon-Initiative:master' into master
dtiwarATS May 28, 2025
3b7d7c3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 2, 2025
81b4a16
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 5, 2025
aff6e77
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 6, 2025
8a0bed0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 10, 2025
1be734e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 18, 2025
7b3774a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 19, 2025
df9cf7c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 20, 2025
8a44c50
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 23, 2025
be6a693
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jun 25, 2025
1d6b440
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 1, 2025
503b55a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 2, 2025
b827cf8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 15, 2025
a694ea9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 16, 2025
6816c36
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 18, 2025
c7ae569
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 23, 2025
29bc22d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 24, 2025
72c19b3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 25, 2025
317f65a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jul 30, 2025
68b815c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 1, 2025
91e77d4
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 7, 2025
ec84b83
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 11, 2025
32338dd
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 12, 2025
ace17c6
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 18, 2025
5ef5023
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 20, 2025
3cae559
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 25, 2025
e7d7178
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 28, 2025
53553af
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Aug 29, 2025
1683957
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 2, 2025
6ffe8df
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 5, 2025
f22458a
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 8, 2025
3b00fd0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 10, 2025
0f316c7
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 11, 2025
07f2821
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 12, 2025
6c72bfe
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 17, 2025
58bf698
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Sep 18, 2025
06ad388
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 9, 2025
fcb9bd3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 27, 2025
695751e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 29, 2025
f0a88ad
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Oct 31, 2025
9718fdd
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 3, 2025
75f0474
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 6, 2025
7faae05
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 10, 2025
8f913eb
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 11, 2025
00b126f
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 14, 2025
f6631d3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 14, 2025
e41c1f3
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 17, 2025
76bef01
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 20, 2025
60a14aa
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Nov 26, 2025
ed06970
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 5, 2025
e84ecf8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 11, 2025
f0ed4b4
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 15, 2025
9902180
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 18, 2025
a4814cc
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 22, 2025
b496d24
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Dec 24, 2025
a2905ae
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 6, 2026
7e93d59
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 7, 2026
9238ec7
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 12, 2026
64c2492
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 14, 2026
c9cf59d
Update PopupAuthor.tsx
dtiwarATS Jan 14, 2026
af6abe6
Revert "Update PopupAuthor.tsx"
dtiwarATS Jan 19, 2026
66f9a4b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 19, 2026
d97bcae
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 21, 2026
3d9a154
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 28, 2026
2e44357
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Jan 30, 2026
b56f0c7
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 2, 2026
05aa784
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 4, 2026
dd56c6e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 5, 2026
e5d7b6d
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 13, 2026
0ccf815
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 16, 2026
f061711
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 25, 2026
ed16fb9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 26, 2026
4605461
Update lesson_mocks.ts
dtiwarATS Feb 26, 2026
d593a63
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Feb 27, 2026
19ffb08
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 2, 2026
08e7bf9
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 4, 2026
90ccf1b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 5, 2026
181365b
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 6, 2026
5b5d462
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 9, 2026
0220864
Update responsive-layout.scss
dtiwarATS Mar 9, 2026
2559963
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 12, 2026
ee95b72
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 18, 2026
fd2ca8e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 23, 2026
2f92d62
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Mar 24, 2026
d7729b0
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 1, 2026
f42c667
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 6, 2026
4afe01c
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 9, 2026
82f2ce8
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 20, 2026
836d526
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 22, 2026
64db032
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 23, 2026
769b251
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 24, 2026
1711878
MER-5576
dtiwarATS Apr 27, 2026
ba6a91e
Merge branch 'Simon-Initiative:master' into master
dtiwarATS Apr 28, 2026
54f5239
Merge branch 'master' into MER-5576
dtiwarATS Apr 28, 2026
f0b811a
Update QuillEditor.tsx
dtiwarATS Apr 28, 2026
78be3d8
Update QuillImageUploader.tsx
dtiwarATS Apr 28, 2026
7953a09
Update QuillImageUploader.tsx
dtiwarATS Apr 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 74 additions & 16 deletions assets/src/components/parts/janus-text-flow/QuillEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ const attachInlineCustomColorControl = (
};

const BaseImage = Quill.import('formats/image');
const DeltaCtor = Quill.import('delta');

class ImageWithAlt extends BaseImage {
static blotName = 'image';
Expand Down Expand Up @@ -522,6 +523,9 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({
}, [tree]);
const [delta, setDelta] = React.useState<any>(initialDelta);
const [currentQuillRange, setCurrentQuillRange] = React.useState<number>(0);
const [editingImageIndex, setEditingImageIndex] = React.useState<number | null>(null);
const [imageDialogInitialSrc, setImageDialogInitialSrc] = React.useState<string>('');
const [imageDialogInitialAlt, setImageDialogInitialAlt] = React.useState<string>('');
const [showImageSelectorDailog, setShowImageSelectorDailog] = React.useState<boolean>(false);
const [showFIBOptionEditorDailog, setShowFIBOptionEditorDailog] = React.useState<boolean>(false);
const [showLinkDialog, setShowLinkDialog] = React.useState<boolean>(false);
Expand Down Expand Up @@ -664,23 +668,61 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({

const onEditorClick = (event: MouseEvent) => {
const anchor = getAnchorFromEventTarget(event.target);
if (!anchor) return;
if (anchor) {
const blot = Quill.find(anchor);
if (!blot) return;

const blot = Quill.find(anchor);
if (!blot) return;
event.preventDefault();
event.stopPropagation();

event.preventDefault();
event.stopPropagation();
const index = editor.getIndex(blot);
const length = Math.max(1, blot.length?.() || 1);

const index = editor.getIndex(blot);
const length = Math.max(1, blot.length?.() || 1);
editor.setSelection(index, length);
openLinkDialog({ index, length }, anchor.getAttribute('href') || '');
return;
}

editor.setSelection(index, length);
openLinkDialog({ index, length }, anchor.getAttribute('href') || '');
if (event.target instanceof HTMLImageElement) {
const imageBlot = Quill.find(event.target);
if (!imageBlot) return;

event.preventDefault();
event.stopPropagation();

const imageIndex = editor.getIndex(imageBlot);
const imageOp = editor.getContents(imageIndex, 1)?.ops?.[0];
const imageValue = imageOp?.insert?.image;
const imageSrc = typeof imageValue === 'string' ? imageValue : imageValue?.src || '';
const imageAlt =
typeof imageValue === 'object'
? imageValue?.alt || imageOp?.attributes?.alt || imageOp?.insert?.alt || ''
: imageOp?.attributes?.alt || imageOp?.insert?.alt || '';

setEditingImageIndex(imageIndex);
setCurrentQuillRange(imageIndex);
setImageDialogInitialSrc(imageSrc);
setImageDialogInitialAlt(imageAlt);
setShowImageSelectorDailog(true);
}
};

root.addEventListener('mousedown', onEditorMouseDown, true);
root.addEventListener('click', onEditorClick, true);
const clipboard = editor.getModule('clipboard');
clipboard.addMatcher('IMG', (node: HTMLImageElement) => {
const src = node.getAttribute('src');
if (!src) {
return new DeltaCtor();
}

return new DeltaCtor().insert({
image: {
src,
alt: node.getAttribute('alt') || '',
},
});
});
return () => {
root.removeEventListener('mousedown', onEditorMouseDown, true);
root.removeEventListener('click', onEditorClick, true);
Expand Down Expand Up @@ -720,16 +762,16 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({
}, [applyColorFormat]);

const customHandlers = {
textStyle: function (value: string) {
textStyle: function (this: any, value: string) {
applyTextStyle(this.quill, value);
},
color: function (value: string) {
color: function (this: any, value: string) {
this.quill.format('color', value, 'user');
},
background: function (value: string) {
background: function (this: any, value: string) {
this.quill.format('background', value, 'user');
},
adaptivity: function (value: string) {
adaptivity: function (this: any, value: string) {
const range = this.quill.getSelection();
let selectionValue = '';
if (range && range.length > 0) {
Expand All @@ -744,11 +786,14 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({
this.quill.deleteText(range.index + expression.length + 2, expression.length + 2);
}
},
image: function (value: string) {
image: function (this: any, value: string) {
setEditingImageIndex(null);
setImageDialogInitialSrc('');
setImageDialogInitialAlt('');
setShowImageSelectorDailog(true);
setCurrentQuillRange(this.quill.getSelection()?.index || 0);
},
insertFIBOption: function (value: string) {
insertFIBOption: function (this: any, value: string) {
const range = this.quill.getSelection();
const insertIndex = range ? range.index : this.quill.getLength();
setCurrentQuillRange(insertIndex);
Expand Down Expand Up @@ -819,9 +864,16 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({
if (!quill?.current || !imageURL) return;

const editor = quill.current.getEditor();
const index = currentQuillRange ?? editor.getLength();
const isEditing = editingImageIndex !== null;
const index = isEditing ? editingImageIndex : currentQuillRange ?? editor.getLength();

if (isEditing) {
editor.deleteText(index, 1, 'user');
}
editor.insertEmbed(index, 'image', { src: imageURL, alt: imageAltText }, 'user');
setEditingImageIndex(null);
setImageDialogInitialSrc('');
setImageDialogInitialAlt('');
};

const handleFIBOptionsEditorSave = (Options: Array<OptionItem>) => {
Expand All @@ -845,6 +897,9 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({

const handleImageUploaderDailogClose = () => {
setShowImageSelectorDailog(false);
setEditingImageIndex(null);
setImageDialogInitialSrc('');
setImageDialogInitialAlt('');
};

const handleFIBOptionsEditorClose = () => {
Expand Down Expand Up @@ -1015,6 +1070,9 @@ export const QuillEditor: React.FC<QuillEditorProps> = ({
showImageSelectorDailog={showImageSelectorDailog}
handleImageDetailsSave={handleImageDetailsSave}
handleImageDailogClose={handleImageUploaderDailogClose}
initialImageSrc={imageDialogInitialSrc}
initialImageAltText={imageDialogInitialAlt}
isEditingImage={editingImageIndex !== null}
></QuillImageUploader>
}
{showFIBOptionEditorDailog && (
Expand Down
45 changes: 37 additions & 8 deletions assets/src/components/parts/janus-text-flow/QuillImageUploader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,65 @@ interface QuillImageUploaderProps {
handleImageDetailsSave: (imageSrc: string, imageAltText: string) => void;
handleImageDailogClose: () => void;
showImageSelectorDailog?: boolean;
initialImageSrc?: string;
initialImageAltText?: string;
isEditingImage?: boolean;
}
export const QuillImageUploader: React.FC<QuillImageUploaderProps> = ({
handleImageDetailsSave,
showImageSelectorDailog,
handleImageDailogClose,
initialImageSrc = '',
initialImageAltText = '',
isEditingImage = false,
}) => {
const [imageURL, setImageURL] = React.useState<string>('');
const [imageAltText, setImageAltText] = React.useState<string>('');
const [errorMessage, setErrorMessage] = React.useState<string>('');

React.useEffect(() => {
if (!showImageSelectorDailog) {
setImageURL('');
setImageAltText('');
setErrorMessage('');
return;
}

setImageURL(initialImageSrc);
setImageAltText(initialImageAltText);
setErrorMessage('');
}, [showImageSelectorDailog, initialImageSrc, initialImageAltText]);

const handleOnImageURLChange: ReactEventHandler<HTMLInputElement> = (event) => {
const el = event.target as HTMLInputElement;
const val = el.value;
setImageURL(val);
setErrorMessage('');
};
const handleOnImageAlTextChange: ReactEventHandler<HTMLInputElement> = (event) => {
const el = event.target as HTMLInputElement;
const val = el.value;
setImageAltText(val);
setErrorMessage('');
};

const onSave = () => {
if (!imageURL.trim()) {
setErrorMessage('Image URL is required.');
return;
}
handleImageDetailsSave(imageURL.trim(), imageAltText.trim());
};

return (
<React.Fragment>
{
<>
<Modal show={showImageSelectorDailog} onHide={handleImageDailogClose}>
<Modal.Header closeButton={true} className="px-8 pb-0">
<h3 className="modal-title font-bold">MCQ - Insert Image</h3>
<h3 className="modal-title font-bold">
{isEditingImage ? 'Edit Image' : 'Insert Image'}
</h3>
</Modal.Header>
<Modal.Body className="px-8">
<div style={{ width: '100%' }}>
Expand All @@ -55,15 +89,10 @@ export const QuillImageUploader: React.FC<QuillImageUploaderProps> = ({
style={{ width: '100%' }}
/>
</div>
{errorMessage && <div className="text-danger mt-2">{errorMessage}</div>}
</Modal.Body>
<Modal.Footer className="px-8 pb-6 flex-row justify-items-stretch">
<button
id="btnDelete"
className="btn btn-primary flex-grow basis-1"
onClick={() => {
handleImageDetailsSave(imageURL, imageAltText);
}}
>
<button id="btnDelete" className="btn btn-primary flex-grow basis-1" onClick={onSave}>
{`Save`}
</button>
<button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface MarkupTree {
tag: string;
href?: string;
src?: string;
alt?: string;
target?: string;
style?: any;
text?: string;
Expand Down Expand Up @@ -85,7 +86,7 @@ export const renderFlow = (
src={treeNode.src}
target={treeNode.target}
style={styles}
text={treeNode.text}
text={treeNode.tag === 'img' ? treeNode.alt : treeNode.text}
state={state}
customCssClass={treeNode.customCssClass}
displayRawText={true}
Expand All @@ -107,7 +108,8 @@ export const renderFlow = (

// eslint-disable-next-line react/display-name
const Editor: React.FC<any> = React.memo(({ html, tree, portal, state, projectSlug }) => {
const quillProps: { tree?: any; html?: any; 'project-slug'?: string } = {};
const quillProps: { tree?: any; html?: any; 'project-slug'?: string; showimagecontrol?: string } =
{};
if (tree) {
quillProps.tree = JSON.stringify(tree);
}
Expand Down Expand Up @@ -135,6 +137,7 @@ const Editor: React.FC<any> = React.memo(({ html, tree, portal, state, projectSl
quillProps['project-slug'] = resolvedProjectSlug;
(quillProps as any).projectSlug = resolvedProjectSlug;
}
quillProps.showimagecontrol = 'true';
/* console.log('E RERENDER', { html, tree, portal }); */
const E = () => (
<div style={{ padding: 20 }}>{React.createElement(quillEditorTagName, quillProps)}</div>
Expand Down
6 changes: 4 additions & 2 deletions assets/src/components/parts/janus-text-flow/quill-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -235,13 +235,15 @@ export const convertQuillToJanus = (delta: Delta) => {
const imageDetails: any = op.insert;
const imageValue = imageDetails?.image;
const src = typeof imageValue === 'string' ? imageValue : imageValue.src;
const altFromImageValue = typeof imageValue === 'object' ? imageValue?.alt : undefined;
const altFromLegacyInsert = imageDetails?.alt;
const child: JanusMarkupNode = {
tag: 'img',
style: {
height: '100%',
width: '100%',
},
alt: `${op?.attributes?.alt || ''}`,
alt: `${altFromImageValue ?? op?.attributes?.alt ?? altFromLegacyInsert ?? ''}`,
src: `${src}`,
children: [],
};
Expand Down Expand Up @@ -433,7 +435,7 @@ const processJanusChildren = (node: JanusMarkupNode, doc: Delta, parentAttrs: an
lineAttrs.align = child.style.textAlign;
}
if (child.tag === 'img') {
doc.insert({ image: child.src, alt: child.alt });
doc.insert({ image: { src: child.src || '', alt: child.alt || '' } });
}
line.insert('\n', lineAttrs);
}
Expand Down
10 changes: 10 additions & 0 deletions assets/test/advanced_authoring/right_menu/lesson/lesson_mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,20 @@ export const transformedSchema = {
defaultScreenWidth: 1000,
defaultScreenHeight: 500,
enableHistory: true,
displayRefreshWarningPopup: true,
variables: [],
logoutMessage: '',
logoutPanelImageURL: '',
backgroundImageURL: '',
backgroundImageScaleContent: false,
darkModeSetting: false,
responsiveLayout: false,
grid: false,
centerpoint: false,
columnGuides: false,
rowGuides: false,
},
displayApplicationChrome: false,
additionalStylesheets: [
'default',
'https://etx-nec.s3-us-west-2.amazonaws.com/css/etx/styles/style_season.css',
Expand Down
Loading