diff --git a/resources/public/img/github-logo-transparent.png b/resources/public/img/github-logo-transparent.png new file mode 100644 index 0000000..6a37959 Binary files /dev/null and b/resources/public/img/github-logo-transparent.png differ diff --git a/resources/public/index.html b/resources/public/index.html index 478a611..350ba42 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -1,3 +1,4 @@ + Tutor - - + + You - - + + - - + + @@ -104,42 +105,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਅ - - ਆ - - ਇ - - ਈ - - ਉ - - ਊ - - ਏ - - ਐ - - ਓ - - ਔ - - ਅੰ - - ਆਂ + ਅ + ਆ + ਇ + ਈ + ਉ + ਊ + ਏ + ਐ + ਓ + ਔ + ਅੰ + ਆਂ Play RTL @@ -148,42 +125,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਸ - - ਸਾ - - ਸਿ - - ਸੀ - - ਸੁ - - ਸੂ - - ਸੇ - - ਸੈ - - ਸੋ - - ਸੌ - - ਸੰ - - ਸਾਂ + ਸ + ਸਾ + ਸਿ + ਸੀ + ਸੁ + ਸੂ + ਸੇ + ਸੈ + ਸੋ + ਸੌ + ਸੰ + ਸਾਂ Play RTL @@ -192,42 +145,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਹ - - ਹਾ - - ਹਿ - - ਹੀ - - ਹੁ - - ਹੂ - - ਹੇ - - ਹੈ - - ਹੋ - - ਹੌ - - ਹੰ - - ਹਾਂ + ਹ + ਹਾ + ਹਿ + ਹੀ + ਹੁ + ਹੂ + ਹੇ + ਹੈ + ਹੋ + ਹੌ + ਹੰ + ਹਾਂ Play RTL @@ -236,42 +165,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਕ - - ਕਾ - - ਕਿ - - ਕੀ - - ਕੁ - - ਕੂ - - ਕੇ - - ਕੈ - - ਕੋ - - ਕੌ - - ਕੰ - - ਕਾਂ + ਕ + ਕਾ + ਕਿ + ਕੀ + ਕੁ + ਕੂ + ਕੇ + ਕੈ + ਕੋ + ਕੌ + ਕੰ + ਕਾਂ Play RTL @@ -280,42 +185,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਖ - - ਖਾ - - ਖਿ - - ਖੀ - - ਖੁ - - ਖੂ - - ਖੇ - - ਖੈ - - ਖੋ - - ਖੌ - - ਖੰ - - ਖਾਂ + ਖ + ਖਾ + ਖਿ + ਖੀ + ਖੁ + ਖੂ + ਖੇ + ਖੈ + ਖੋ + ਖੌ + ਖੰ + ਖਾਂ Play RTL @@ -324,42 +205,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਗ - - ਗਾ - - ਗਿ - - ਗੀ - - ਗੁ - - ਗੂ - - ਗੇ - - ਗੈ - - ਗੋ - - ਗੌ - - ਗੰ - - ਗਾਂ + ਗ + ਗਾ + ਗਿ + ਗੀ + ਗੁ + ਗੂ + ਗੇ + ਗੈ + ਗੋ + ਗੌ + ਗੰ + ਗਾਂ Play RTL @@ -368,42 +225,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਘ - - ਘਾ - - ਘਿ - - ਘੀ - - ਘੁ - - ਘੂ - - ਘੇ - - ਘੈ - - ਘੋ - - ਘੌ - - ਘੰ - - ਘਾਂ + ਘ + ਘਾ + ਘਿ + ਘੀ + ਘੁ + ਘੂ + ਘੇ + ਘੈ + ਘੋ + ਘੌ + ਘੰ + ਘਾਂ Play RTL @@ -412,42 +245,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਙ - - ਙਾ - - ਙਿ - - ਙੀ - - ਙੁ - - ਙੂ - - ਙੇ - - ਙੈ - - ਙੋ - - ਙੌ - - ਙੰ - - ਙਾਂ + ਙ + ਙਾ + ਙਿ + ਙੀ + ਙੁ + ਙੂ + ਙੇ + ਙੈ + ਙੋ + ਙੌ + ਙੰ + ਙਾਂ Play RTL @@ -456,42 +265,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਚ - - ਚਾ - - ਚਿ - - ਚੀ - - ਚੁ - - ਚੂ - - ਚੇ - - ਚੈ - - ਚੋ - - ਚੌ - - ਚੰ - - ਚਾਂ + ਚ + ਚਾ + ਚਿ + ਚੀ + ਚੁ + ਚੂ + ਚੇ + ਚੈ + ਚੋ + ਚੌ + ਚੰ + ਚਾਂ Play RTL @@ -500,42 +285,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਛ - - ਛਾ - - ਛਿ - - ਛੀ - - ਛੁ - - ਛੂ - - ਛੇ - - ਛੈ - - ਛੋ - - ਛੌ - - ਛੰ - - ਛਾਂ + ਛ + ਛਾ + ਛਿ + ਛੀ + ਛੁ + ਛੂ + ਛੇ + ਛੈ + ਛੋ + ਛੌ + ਛੰ + ਛਾਂ Play RTL @@ -544,42 +305,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਜ - - ਜਾ - - ਜਿ - - ਜੀ - - ਜੁ - - ਜੂ - - ਜੇ - - ਜੈ - - ਜੋ - - ਜੌ - - ਜੰ - - ਜਾਂ + ਜ + ਜਾ + ਜਿ + ਜੀ + ਜੁ + ਜੂ + ਜੇ + ਜੈ + ਜੋ + ਜੌ + ਜੰ + ਜਾਂ Play RTL @@ -588,42 +325,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਝ - - ਝਾ - - ਝਿ - - ਝੀ - - ਝੁ - - ਝੂ - - ਝੇ - - ਝੈ - - ਝੋ - - ਝੌ - - ਝੰ - - ਝਾਂ + ਝ + ਝਾ + ਝਿ + ਝੀ + ਝੁ + ਝੂ + ਝੇ + ਝੈ + ਝੋ + ਝੌ + ਝੰ + ਝਾਂ Play RTL @@ -632,42 +345,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਞ - - ਞਾ - - ਞਿ - - ਞੀ - - ਞੁ - - ਞੂ - - ਞੇ - - ਞੈ - - ਞੋ - - ਞੌ - - ਞੰ - - ਞਾਂ + ਞ + ਞਾ + ਞਿ + ਞੀ + ਞੁ + ਞੂ + ਞੇ + ਞੈ + ਞੋ + ਞੌ + ਞੰ + ਞਾਂ Play RTL @@ -676,42 +365,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਟ - - ਟਾ - - ਟਿ - - ਟੀ - - ਟੁ - - ਟੂ - - ਟੇ - - ਟੈ - - ਟੋ - - ਟੌ - - ਟੰ - - ਟਾਂ + ਟ + ਟਾ + ਟਿ + ਟੀ + ਟੁ + ਟੂ + ਟੇ + ਟੈ + ਟੋ + ਟੌ + ਟੰ + ਟਾਂ Play RTL @@ -720,42 +385,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਠ - - ਠਾ - - ਠਿ - - ਠੀ - - ਠੁ - - ਠੂ - - ਠੇ - - ਠੈ - - ਠੋ - - ਠੌ - - ਠੰ - - ਠਾਂ + ਠ + ਠਾ + ਠਿ + ਠੀ + ਠੁ + ਠੂ + ਠੇ + ਠੈ + ਠੋ + ਠੌ + ਠੰ + ਠਾਂ Play RTL @@ -764,42 +405,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਡ - - ਡਾ - - ਡਿ - - ਡੀ - - ਡੁ - - ਡੂ - - ਡੇ - - ਡੈ - - ਡੋ - - ਡੌ - - ਡੰ - - ਡਾਂ + ਡ + ਡਾ + ਡਿ + ਡੀ + ਡੁ + ਡੂ + ਡੇ + ਡੈ + ਡੋ + ਡੌ + ਡੰ + ਡਾਂ Play RTL @@ -808,42 +425,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਢ - - ਢਾ - - ਢਿ - - ਢੀ - - ਢੁ - - ਢੂ - - ਢੇ - - ਢੈ - - ਢੋ - - ਢੌ - - ਢੰ - - ਢਾਂ + ਢ + ਢਾ + ਢਿ + ਢੀ + ਢੁ + ਢੂ + ਢੇ + ਢੈ + ਢੋ + ਢੌ + ਢੰ + ਢਾਂ Play RTL @@ -852,42 +445,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਣ - - ਣਾ - - ਣਿ - - ਣੀ - - ਣੁ - - ਣੂ - - ਣੇ - - ਣੈ - - ਣੋ - - ਣੌ - - ਣੰ - - ਣਾਂ + ਣ + ਣਾ + ਣਿ + ਣੀ + ਣੁ + ਣੂ + ਣੇ + ਣੈ + ਣੋ + ਣੌ + ਣੰ + ਣਾਂ Play RTL @@ -896,42 +465,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਤ - - ਤਾ - - ਤਿ - - ਤੀ - - ਤੁ - - ਤੂ - - ਤੇ - - ਤੈ - - ਤੋ - - ਤੌ - - ਤੰ - - ਤਾਂ + ਤ + ਤਾ + ਤਿ + ਤੀ + ਤੁ + ਤੂ + ਤੇ + ਤੈ + ਤੋ + ਤੌ + ਤੰ + ਤਾਂ Play RTL @@ -940,42 +485,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਥ - - ਥਾ - - ਥਿ - - ਥੀ - - ਥੁ - - ਥੂ - - ਥੇ - - ਥੈ - - ਥੋ - - ਥੌ - - ਥੰ - - ਥਾਂ + ਥ + ਥਾ + ਥਿ + ਥੀ + ਥੁ + ਥੂ + ਥੇ + ਥੈ + ਥੋ + ਥੌ + ਥੰ + ਥਾਂ Play RTL @@ -984,42 +505,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਦ - - ਦਾ - - ਦਿ - - ਦੀ - - ਦੁ - - ਦੂ - - ਦੇ - - ਦੈ - - ਦੋ - - ਦੌ - - ਦੰ - - ਦਾਂ + ਦ + ਦਾ + ਦਿ + ਦੀ + ਦੁ + ਦੂ + ਦੇ + ਦੈ + ਦੋ + ਦੌ + ਦੰ + ਦਾਂ Play RTL @@ -1028,42 +525,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਧ - - ਧਾ - - ਧਿ - - ਧੀ - - ਧੁ - - ਧੂ - - ਧੇ - - ਧੈ - - ਧੋ - - ਧੌ - - ਧੰ - - ਧਾਂ + ਧ + ਧਾ + ਧਿ + ਧੀ + ਧੁ + ਧੂ + ਧੇ + ਧੈ + ਧੋ + ਧੌ + ਧੰ + ਧਾਂ Play RTL @@ -1072,42 +545,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਨ - - ਨਾ - - ਨਿ - - ਨੀ - - ਨੁ - - ਨੂ - - ਨੇ - - ਨੈ - - ਨੋ - - ਨੌ - - ਨੰ - - ਨਾਂ + ਨ + ਨਾ + ਨਿ + ਨੀ + ਨੁ + ਨੂ + ਨੇ + ਨੈ + ਨੋ + ਨੌ + ਨੰ + ਨਾਂ Play RTL @@ -1116,42 +565,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਪ - - ਪਾ - - ਪਿ - - ਪੀ - - ਪੁ - - ਪੂ - - ਪੇ - - ਪੈ - - ਪੋ - - ਪੌ - - ਪੰ - - ਪਾਂ + ਪ + ਪਾ + ਪਿ + ਪੀ + ਪੁ + ਪੂ + ਪੇ + ਪੈ + ਪੋ + ਪੌ + ਪੰ + ਪਾਂ Play RTL @@ -1160,42 +585,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਫ - - ਫਾ - - ਫਿ - - ਫੀ - - ਫੁ - - ਫੂ - - ਫੇ - - ਫੈ - - ਫੋ - - ਫੌ - - ਫੰ - - ਫਾਂ + ਫ + ਫਾ + ਫਿ + ਫੀ + ਫੁ + ਫੂ + ਫੇ + ਫੈ + ਫੋ + ਫੌ + ਫੰ + ਫਾਂ Play RTL @@ -1204,42 +605,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਬ - - ਬਾ - - ਬਿ - - ਬੀ - - ਬੁ - - ਬੂ - - ਬੇ - - ਬੈ - - ਬੋ - - ਬੌ - - ਬੰ - - ਬਾਂ + ਬ + ਬਾ + ਬਿ + ਬੀ + ਬੁ + ਬੂ + ਬੇ + ਬੈ + ਬੋ + ਬੌ + ਬੰ + ਬਾਂ Play RTL @@ -1248,42 +625,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਭ - - ਭਾ - - ਭਿ - - ਭੀ - - ਭੁ - - ਭੂ - - ਭੇ - - ਭੈ - - ਭੋ - - ਭੌ - - ਭੰ - - ਭਾਂ + ਭ + ਭਾ + ਭਿ + ਭੀ + ਭੁ + ਭੂ + ਭੇ + ਭੈ + ਭੋ + ਭੌ + ਭੰ + ਭਾਂ Play RTL @@ -1292,42 +645,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਮ - - ਮਾ - - ਮਿ - - ਮੀ - - ਮੁ - - ਮੂ - - ਮੇ - - ਮੈ - - ਮੋ - - ਮੌ - - ਮੰ - - ਮਾਂ + ਮ + ਮਾ + ਮਿ + ਮੀ + ਮੁ + ਮੂ + ਮੇ + ਮੈ + ਮੋ + ਮੌ + ਮੰ + ਮਾਂ Play RTL @@ -1336,42 +665,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਯ - - ਯਾ - - ਯਿ - - ਯੀ - - ਯੁ - - ਯੂ - - ਯੇ - - ਯੈ - - ਯੋ - - ਯੌ - - ਯੰ - - ਯਾਂ + ਯ + ਯਾ + ਯਿ + ਯੀ + ਯੁ + ਯੂ + ਯੇ + ਯੈ + ਯੋ + ਯੌ + ਯੰ + ਯਾਂ Play RTL @@ -1380,42 +685,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਰ - - ਰਾ - - ਰਿ - - ਰੀ - - ਰੁ - - ਰੂ - - ਰੇ - - ਰੈ - - ਰੋ - - ਰੌ - - ਰੰ - - ਰਾਂ + ਰ + ਰਾ + ਰਿ + ਰੀ + ਰੁ + ਰੂ + ਰੇ + ਰੈ + ਰੋ + ਰੌ + ਰੰ + ਰਾਂ Play RTL @@ -1424,42 +705,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਲ - - ਲਾ - - ਲਿ - - ਲੀ - - ਲੁ - - ਲੂ - - ਲੇ - - ਲੈ - - ਲੋ - - ਲੌ - - ਲੰ - - ਲਾਂ + ਲ + ਲਾ + ਲਿ + ਲੀ + ਲੁ + ਲੂ + ਲੇ + ਲੈ + ਲੋ + ਲੌ + ਲੰ + ਲਾਂ Play RTL @@ -1468,42 +725,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਵ - - ਵਾ - - ਵਿ - - ਵੀ - - ਵੁ - - ਵੂ - - ਵੇ - - ਵੈ - - ਵੋ - - ਵੌ - - ਵੰ - - ਵਾਂ + ਵ + ਵਾ + ਵਿ + ਵੀ + ਵੁ + ਵੂ + ਵੇ + ਵੈ + ਵੋ + ਵੌ + ਵੰ + ਵਾਂ Play RTL @@ -1512,42 +745,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ੜ - - ੜਾ - - ੜਿ - - ੜੀ - - ੜੁ - - ੜੂ - - ੜੇ - - ੜੈ - - ੜੋ - - ੜੌ - - ੜੰ - - ੜਾਂ + ੜ + ੜਾ + ੜਿ + ੜੀ + ੜੁ + ੜੂ + ੜੇ + ੜੈ + ੜੋ + ੜੌ + ੜੰ + ੜਾਂ Play RTL @@ -1556,42 +765,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਸ਼ - - ਸ਼ਾ - - ਸ਼ਿ - - ਸ਼ੀ - - ਸ਼ੁ - - ਸ਼ੂ - - ਸ਼ੇ - - ਸ਼ੈ - - ਸ਼ੋ - - ਸ਼ੌ - - ਸ਼ੰ - - ਸ਼ਾਂ + ਸ਼ + ਸ਼ਾ + ਸ਼ਿ + ਸ਼ੀ + ਸ਼ੁ + ਸ਼ੂ + ਸ਼ੇ + ਸ਼ੈ + ਸ਼ੋ + ਸ਼ੌ + ਸ਼ੰ + ਸ਼ਾਂ Play RTL @@ -1600,41 +785,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਖ਼ - - ਖ਼ਾ - - ਖ਼ਿ - - ਖ਼ੀ - - ਖ਼ੁ - - ਖ਼ੂ - - ਖ਼ੇ - - ਖ਼ੈ - - ਖ਼ੋ - - ਖ਼ੌ - - ਖ਼ੰ - ਖ਼ਾਂ + ਖ਼ + ਖ਼ਾ + ਖ਼ਿ + ਖ਼ੀ + ਖ਼ੁ + ਖ਼ੂ + ਖ਼ੇ + ਖ਼ੈ + ਖ਼ੋ + ਖ਼ੌ + ਖ਼ੰ + ਖ਼ਾਂ Play RTL @@ -1643,41 +805,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਗ਼ - - ਗ਼ਾ - - ਗ਼ਿ - - ਗ਼ੀ - - ਗ਼ੁ - - ਗ਼ੂ - - ਗ਼ੇ - - ਗ਼ੈ - - ਗ਼ੋ - - ਗ਼ੌ - - ਗ਼ੰ - ਗ਼ਾਂ + ਗ਼ + ਗ਼ਾ + ਗ਼ਿ + ਗ਼ੀ + ਗ਼ੁ + ਗ਼ੂ + ਗ਼ੇ + ਗ਼ੈ + ਗ਼ੋ + ਗ਼ੌ + ਗ਼ੰ + ਗ਼ਾਂ Play RTL @@ -1686,42 +825,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਜ਼ - - ਜ਼ਾ - - ਜ਼ਿ - - ਜ਼ੀ - - ਜ਼ੁ - - ਜ਼ੂ - - ਜ਼ੇ - - ਜ਼ੈ - - ਜ਼ੋ - - ਜ਼ੌ - - ਜ਼ੰ - - ਜ਼ਾਂ + ਜ਼ + ਜ਼ਾ + ਜ਼ਿ + ਜ਼ੀ + ਜ਼ੁ + ਜ਼ੂ + ਜ਼ੇ + ਜ਼ੈ + ਜ਼ੋ + ਜ਼ੌ + ਜ਼ੰ + ਜ਼ਾਂ Play RTL @@ -1730,41 +845,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਫ਼ - - ਫ਼ਾ - - ਫ਼ਿ - - ਫ਼ੀ - - ਫ਼ੁ - - ਫ਼ੂ - - ਫ਼ੇ - - ਫ਼ੈ - - ਫ਼ੋ - - ਫ਼ੌ - - ਫ਼ੰ - ਫ਼ਾਂ + ਫ਼ + ਫ਼ਾ + ਫ਼ਿ + ਫ਼ੀ + ਫ਼ੁ + ਫ਼ੂ + ਫ਼ੇ + ਫ਼ੈ + ਫ਼ੋ + ਫ਼ੌ + ਫ਼ੰ + ਫ਼ਾਂ Play RTL @@ -1773,41 +865,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਲ਼ - - ਲ਼ਾ - - ਲ਼ਿ - - ਲ਼ੀ - - ਲ਼ੁ - - ਲ਼ੂ - - ਲ਼ੇ - - ਲ਼ੈ - - ਲ਼ੋ - - ਲ਼ੌ - - ਲ਼ੰ - ਲ਼ਾਂ + ਲ਼ + ਲ਼ਾ + ਲ਼ਿ + ਲ਼ੀ + ਲ਼ੁ + ਲ਼ੂ + ਲ਼ੇ + ਲ਼ੈ + ਲ਼ੋ + ਲ਼ੌ + ਲ਼ੰ + ਲ਼ਾਂ Play RTL @@ -1918,42 +987,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਅ - - ਆ - - ਇ - - ਈ - - ਉ - - ਊ - - ਏ - - ਐ - - ਓ - - ਔ - - ਅੰ - - ਆਂ + ਅ + ਆ + ਇ + ਈ + ਉ + ਊ + ਏ + ਐ + ਓ + ਔ + ਅੰ + ਆਂ Play RTL @@ -1962,42 +1007,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਸ - - ਸਾ - - ਸਿ - - ਸੀ - - ਸੁ - - ਸੂ - - ਸੇ - - ਸੈ - - ਸੋ - - ਸੌ - - ਸੰ - - ਸਾਂ + ਸ + ਸਾ + ਸਿ + ਸੀ + ਸੁ + ਸੂ + ਸੇ + ਸੈ + ਸੋ + ਸੌ + ਸੰ + ਸਾਂ Play RTL @@ -2006,42 +1027,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਹ - - ਹਾ - - ਹਿ - - ਹੀ - - ਹੁ - - ਹੂ - - ਹੇ - - ਹੈ - - ਹੋ - - ਹੌ - - ਹੰ - - ਹਾਂ + ਹ + ਹਾ + ਹਿ + ਹੀ + ਹੁ + ਹੂ + ਹੇ + ਹੈ + ਹੋ + ਹੌ + ਹੰ + ਹਾਂ Play RTL @@ -2050,42 +1047,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਕ - - ਕਾ - - ਕਿ - - ਕੀ - - ਕੁ - - ਕੂ - - ਕੇ - - ਕੈ - - ਕੋ - - ਕੌ - - ਕੰ - - ਕਾਂ + ਕ + ਕਾ + ਕਿ + ਕੀ + ਕੁ + ਕੂ + ਕੇ + ਕੈ + ਕੋ + ਕੌ + ਕੰ + ਕਾਂ Play RTL @@ -2094,42 +1067,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਖ - - ਖਾ - - ਖਿ - - ਖੀ - - ਖੁ - - ਖੂ - - ਖੇ - - ਖੈ - - ਖੋ - - ਖੌ - - ਖੰ - - ਖਾਂ + ਖ + ਖਾ + ਖਿ + ਖੀ + ਖੁ + ਖੂ + ਖੇ + ਖੈ + ਖੋ + ਖੌ + ਖੰ + ਖਾਂ Play RTL @@ -2138,42 +1087,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਗ - - ਗਾ - - ਗਿ - - ਗੀ - - ਗੁ - - ਗੂ - - ਗੇ - - ਗੈ - - ਗੋ - - ਗੌ - - ਗੰ - - ਗਾਂ + ਗ + ਗਾ + ਗਿ + ਗੀ + ਗੁ + ਗੂ + ਗੇ + ਗੈ + ਗੋ + ਗੌ + ਗੰ + ਗਾਂ Play RTL @@ -2182,42 +1107,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਘ - - ਘਾ - - ਘਿ - - ਘੀ - - ਘੁ - - ਘੂ - - ਘੇ - - ਘੈ - - ਘੋ - - ਘੌ - - ਘੰ - - ਘਾਂ + ਘ + ਘਾ + ਘਿ + ਘੀ + ਘੁ + ਘੂ + ਘੇ + ਘੈ + ਘੋ + ਘੌ + ਘੰ + ਘਾਂ Play RTL @@ -2226,42 +1127,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਙ - - ਙਾ - - ਙਿ - - ਙੀ - - ਙੁ - - ਙੂ - - ਙੇ - - ਙੈ - - ਙੋ - - ਙੌ - - ਙੰ - - ਙਾਂ + ਙ + ਙਾ + ਙਿ + ਙੀ + ਙੁ + ਙੂ + ਙੇ + ਙੈ + ਙੋ + ਙੌ + ਙੰ + ਙਾਂ Play RTL @@ -2270,42 +1147,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਚ - - ਚਾ - - ਚਿ - - ਚੀ - - ਚੁ - - ਚੂ - - ਚੇ - - ਚੈ - - ਚੋ - - ਚੌ - - ਚੰ - - ਚਾਂ + ਚ + ਚਾ + ਚਿ + ਚੀ + ਚੁ + ਚੂ + ਚੇ + ਚੈ + ਚੋ + ਚੌ + ਚੰ + ਚਾਂ Play RTL @@ -2314,42 +1167,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਛ - - ਛਾ - - ਛਿ - - ਛੀ - - ਛੁ - - ਛੂ - - ਛੇ - - ਛੈ - - ਛੋ - - ਛੌ - - ਛੰ - - ਛਾਂ + ਛ + ਛਾ + ਛਿ + ਛੀ + ਛੁ + ਛੂ + ਛੇ + ਛੈ + ਛੋ + ਛੌ + ਛੰ + ਛਾਂ Play RTL @@ -2358,42 +1187,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਜ - - ਜਾ - - ਜਿ - - ਜੀ - - ਜੁ - - ਜੂ - - ਜੇ - - ਜੈ - - ਜੋ - - ਜੌ - - ਜੰ - - ਜਾਂ + ਜ + ਜਾ + ਜਿ + ਜੀ + ਜੁ + ਜੂ + ਜੇ + ਜੈ + ਜੋ + ਜੌ + ਜੰ + ਜਾਂ Play RTL @@ -2402,42 +1207,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਝ - - ਝਾ - - ਝਿ - - ਝੀ - - ਝੁ - - ਝੂ - - ਝੇ - - ਝੈ - - ਝੋ - - ਝੌ - - ਝੰ - - ਝਾਂ + ਝ + ਝਾ + ਝਿ + ਝੀ + ਝੁ + ਝੂ + ਝੇ + ਝੈ + ਝੋ + ਝੌ + ਝੰ + ਝਾਂ Play RTL @@ -2446,42 +1227,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਞ - - ਞਾ - - ਞਿ - - ਞੀ - - ਞੁ - - ਞੂ - - ਞੇ - - ਞੈ - - ਞੋ - - ਞੌ - - ਞੰ - - ਞਾਂ + ਞ + ਞਾ + ਞਿ + ਞੀ + ਞੁ + ਞੂ + ਞੇ + ਞੈ + ਞੋ + ਞੌ + ਞੰ + ਞਾਂ Play RTL @@ -2490,42 +1247,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਟ - - ਟਾ - - ਟਿ - - ਟੀ - - ਟੁ - - ਟੂ - - ਟੇ - - ਟੈ - - ਟੋ - - ਟੌ - - ਟੰ - - ਟਾਂ + ਟ + ਟਾ + ਟਿ + ਟੀ + ਟੁ + ਟੂ + ਟੇ + ਟੈ + ਟੋ + ਟੌ + ਟੰ + ਟਾਂ Play RTL @@ -2534,42 +1267,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਠ - - ਠਾ - - ਠਿ - - ਠੀ - - ਠੁ - - ਠੂ - - ਠੇ - - ਠੈ - - ਠੋ - - ਠੌ - - ਠੰ - - ਠਾਂ + ਠ + ਠਾ + ਠਿ + ਠੀ + ਠੁ + ਠੂ + ਠੇ + ਠੈ + ਠੋ + ਠੌ + ਠੰ + ਠਾਂ Play RTL @@ -2578,42 +1287,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਡ - - ਡਾ - - ਡਿ - - ਡੀ - - ਡੁ - - ਡੂ - - ਡੇ - - ਡੈ - - ਡੋ - - ਡੌ - - ਡੰ - - ਡਾਂ + ਡ + ਡਾ + ਡਿ + ਡੀ + ਡੁ + ਡੂ + ਡੇ + ਡੈ + ਡੋ + ਡੌ + ਡੰ + ਡਾਂ Play RTL @@ -2622,42 +1307,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਢ - - ਢਾ - - ਢਿ - - ਢੀ - - ਢੁ - - ਢੂ - - ਢੇ - - ਢੈ - - ਢੋ - - ਢੌ - - ਢੰ - - ਢਾਂ + ਢ + ਢਾ + ਢਿ + ਢੀ + ਢੁ + ਢੂ + ਢੇ + ਢੈ + ਢੋ + ਢੌ + ਢੰ + ਢਾਂ Play RTL @@ -2666,42 +1327,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਣ - - ਣਾ - - ਣਿ - - ਣੀ - - ਣੁ - - ਣੂ - - ਣੇ - - ਣੈ - - ਣੋ - - ਣੌ - - ਣੰ - - ਣਾਂ + ਣ + ਣਾ + ਣਿ + ਣੀ + ਣੁ + ਣੂ + ਣੇ + ਣੈ + ਣੋ + ਣੌ + ਣੰ + ਣਾਂ Play RTL @@ -2710,42 +1347,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਤ - - ਤਾ - - ਤਿ - - ਤੀ - - ਤੁ - - ਤੂ - - ਤੇ - - ਤੈ - - ਤੋ - - ਤੌ - - ਤੰ - - ਤਾਂ + ਤ + ਤਾ + ਤਿ + ਤੀ + ਤੁ + ਤੂ + ਤੇ + ਤੈ + ਤੋ + ਤੌ + ਤੰ + ਤਾਂ Play RTL @@ -2754,42 +1367,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਥ - - ਥਾ - - ਥਿ - - ਥੀ - - ਥੁ - - ਥੂ - - ਥੇ - - ਥੈ - - ਥੋ - - ਥੌ - - ਥੰ - - ਥਾਂ + ਥ + ਥਾ + ਥਿ + ਥੀ + ਥੁ + ਥੂ + ਥੇ + ਥੈ + ਥੋ + ਥੌ + ਥੰ + ਥਾਂ Play RTL @@ -2798,42 +1387,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਦ - - ਦਾ - - ਦਿ - - ਦੀ - - ਦੁ - - ਦੂ - - ਦੇ - - ਦੈ - - ਦੋ - - ਦੌ - - ਦੰ - - ਦਾਂ + ਦ + ਦਾ + ਦਿ + ਦੀ + ਦੁ + ਦੂ + ਦੇ + ਦੈ + ਦੋ + ਦੌ + ਦੰ + ਦਾਂ Play RTL @@ -2842,42 +1407,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਧ - - ਧਾ - - ਧਿ - - ਧੀ - - ਧੁ - - ਧੂ - - ਧੇ - - ਧੈ - - ਧੋ - - ਧੌ - - ਧੰ - - ਧਾਂ + ਧ + ਧਾ + ਧਿ + ਧੀ + ਧੁ + ਧੂ + ਧੇ + ਧੈ + ਧੋ + ਧੌ + ਧੰ + ਧਾਂ Play RTL @@ -2886,42 +1427,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਨ - - ਨਾ - - ਨਿ - - ਨੀ - - ਨੁ - - ਨੂ - - ਨੇ - - ਨੈ - - ਨੋ - - ਨੌ - - ਨੰ - - ਨਾਂ + ਨ + ਨਾ + ਨਿ + ਨੀ + ਨੁ + ਨੂ + ਨੇ + ਨੈ + ਨੋ + ਨੌ + ਨੰ + ਨਾਂ Play RTL @@ -2930,42 +1447,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਪ - - ਪਾ - - ਪਿ - - ਪੀ - - ਪੁ - - ਪੂ - - ਪੇ - - ਪੈ - - ਪੋ - - ਪੌ - - ਪੰ - - ਪਾਂ + ਪ + ਪਾ + ਪਿ + ਪੀ + ਪੁ + ਪੂ + ਪੇ + ਪੈ + ਪੋ + ਪੌ + ਪੰ + ਪਾਂ Play RTL @@ -2974,42 +1467,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਫ - - ਫਾ - - ਫਿ - - ਫੀ - - ਫੁ - - ਫੂ - - ਫੇ - - ਫੈ - - ਫੋ - - ਫੌ - - ਫੰ - - ਫਾਂ + ਫ + ਫਾ + ਫਿ + ਫੀ + ਫੁ + ਫੂ + ਫੇ + ਫੈ + ਫੋ + ਫੌ + ਫੰ + ਫਾਂ Play RTL @@ -3018,42 +1487,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਬ - - ਬਾ - - ਬਿ - - ਬੀ - - ਬੁ - - ਬੂ - - ਬੇ - - ਬੈ - - ਬੋ - - ਬੌ - - ਬੰ - - ਬਾਂ + ਬ + ਬਾ + ਬਿ + ਬੀ + ਬੁ + ਬੂ + ਬੇ + ਬੈ + ਬੋ + ਬੌ + ਬੰ + ਬਾਂ Play RTL @@ -3062,42 +1507,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਭ - - ਭਾ - - ਭਿ - - ਭੀ - - ਭੁ - - ਭੂ - - ਭੇ - - ਭੈ - - ਭੋ - - ਭੌ - - ਭੰ - - ਭਾਂ + ਭ + ਭਾ + ਭਿ + ਭੀ + ਭੁ + ਭੂ + ਭੇ + ਭੈ + ਭੋ + ਭੌ + ਭੰ + ਭਾਂ Play RTL @@ -3106,42 +1527,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਮ - - ਮਾ - - ਮਿ - - ਮੀ - - ਮੁ - - ਮੂ - - ਮੇ - - ਮੈ - - ਮੋ - - ਮੌ - - ਮੰ - - ਮਾਂ + ਮ + ਮਾ + ਮਿ + ਮੀ + ਮੁ + ਮੂ + ਮੇ + ਮੈ + ਮੋ + ਮੌ + ਮੰ + ਮਾਂ Play RTL @@ -3150,42 +1547,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਯ - - ਯਾ - - ਯਿ - - ਯੀ - - ਯੁ - - ਯੂ - - ਯੇ - - ਯੈ - - ਯੋ - - ਯੌ - - ਯੰ - - ਯਾਂ + ਯ + ਯਾ + ਯਿ + ਯੀ + ਯੁ + ਯੂ + ਯੇ + ਯੈ + ਯੋ + ਯੌ + ਯੰ + ਯਾਂ Play RTL @@ -3194,42 +1567,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਰ - - ਰਾ - - ਰਿ - - ਰੀ - - ਰੁ - - ਰੂ - - ਰੇ - - ਰੈ - - ਰੋ - - ਰੌ - - ਰੰ - - ਰਾਂ + ਰ + ਰਾ + ਰਿ + ਰੀ + ਰੁ + ਰੂ + ਰੇ + ਰੈ + ਰੋ + ਰੌ + ਰੰ + ਰਾਂ Play RTL @@ -3238,42 +1587,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਲ - - ਲਾ - - ਲਿ - - ਲੀ - - ਲੁ - - ਲੂ - - ਲੇ - - ਲੈ - - ਲੋ - - ਲੌ - - ਲੰ - - ਲਾਂ + ਲ + ਲਾ + ਲਿ + ਲੀ + ਲੁ + ਲੂ + ਲੇ + ਲੈ + ਲੋ + ਲੌ + ਲੰ + ਲਾਂ Play RTL @@ -3282,42 +1607,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਵ - - ਵਾ - - ਵਿ - - ਵੀ - - ਵੁ - - ਵੂ - - ਵੇ - - ਵੈ - - ਵੋ - - ਵੌ - - ਵੰ - - ਵਾਂ + ਵ + ਵਾ + ਵਿ + ਵੀ + ਵੁ + ਵੂ + ਵੇ + ਵੈ + ਵੋ + ਵੌ + ਵੰ + ਵਾਂ Play RTL @@ -3326,42 +1627,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ੜ - - ੜਾ - - ੜਿ - - ੜੀ - - ੜੁ - - ੜੂ - - ੜੇ - - ੜੈ - - ੜੋ - - ੜੌ - - ੜੰ - - ੜਾਂ + ੜ + ੜਾ + ੜਿ + ੜੀ + ੜੁ + ੜੂ + ੜੇ + ੜੈ + ੜੋ + ੜੌ + ੜੰ + ੜਾਂ Play RTL @@ -3370,42 +1647,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਸ਼ - - ਸ਼ਾ - - ਸ਼ਿ - - ਸ਼ੀ - - ਸ਼ੁ - - ਸ਼ੂ - - ਸ਼ੇ - - ਸ਼ੈ - - ਸ਼ੋ - - ਸ਼ੌ - - ਸ਼ੰ - - ਸ਼ਾਂ + ਸ਼ + ਸ਼ਾ + ਸ਼ਿ + ਸ਼ੀ + ਸ਼ੁ + ਸ਼ੂ + ਸ਼ੇ + ਸ਼ੈ + ਸ਼ੋ + ਸ਼ੌ + ਸ਼ੰ + ਸ਼ਾਂ Play RTL @@ -3414,41 +1667,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਖ਼ - - ਖ਼ਾ - - ਖ਼ਿ - - ਖ਼ੀ - - ਖ਼ੁ - - ਖ਼ੂ - - ਖ਼ੇ - - ਖ਼ੈ - - ਖ਼ੋ - - ਖ਼ੌ - - ਖ਼ੰ - ਖ਼ਾਂ + ਖ਼ + ਖ਼ਾ + ਖ਼ਿ + ਖ਼ੀ + ਖ਼ੁ + ਖ਼ੂ + ਖ਼ੇ + ਖ਼ੈ + ਖ਼ੋ + ਖ਼ੌ + ਖ਼ੰ + ਖ਼ਾਂ Play RTL @@ -3457,41 +1687,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਗ਼ - - ਗ਼ਾ - - ਗ਼ਿ - - ਗ਼ੀ - - ਗ਼ੁ - - ਗ਼ੂ - - ਗ਼ੇ - - ਗ਼ੈ - - ਗ਼ੋ - - ਗ਼ੌ - - ਗ਼ੰ - ਗ਼ਾਂ + ਗ਼ + ਗ਼ਾ + ਗ਼ਿ + ਗ਼ੀ + ਗ਼ੁ + ਗ਼ੂ + ਗ਼ੇ + ਗ਼ੈ + ਗ਼ੋ + ਗ਼ੌ + ਗ਼ੰ + ਗ਼ਾਂ Play RTL @@ -3500,42 +1707,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਜ਼ - - ਜ਼ਾ - - ਜ਼ਿ - - ਜ਼ੀ - - ਜ਼ੁ - - ਜ਼ੂ - - ਜ਼ੇ - - ਜ਼ੈ - - ਜ਼ੋ - - ਜ਼ੌ - - ਜ਼ੰ - - ਜ਼ਾਂ + ਜ਼ + ਜ਼ਾ + ਜ਼ਿ + ਜ਼ੀ + ਜ਼ੁ + ਜ਼ੂ + ਜ਼ੇ + ਜ਼ੈ + ਜ਼ੋ + ਜ਼ੌ + ਜ਼ੰ + ਜ਼ਾਂ Play RTL @@ -3544,41 +1727,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਫ਼ - - ਫ਼ਾ - - ਫ਼ਿ - - ਫ਼ੀ - - ਫ਼ੁ - - ਫ਼ੂ - - ਫ਼ੇ - - ਫ਼ੈ - - ਫ਼ੋ - - ਫ਼ੌ - - ਫ਼ੰ - ਫ਼ਾਂ + ਫ਼ + ਫ਼ਾ + ਫ਼ਿ + ਫ਼ੀ + ਫ਼ੁ + ਫ਼ੂ + ਫ਼ੇ + ਫ਼ੈ + ਫ਼ੋ + ਫ਼ੌ + ਫ਼ੰ + ਫ਼ਾਂ Play RTL @@ -3587,41 +1747,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" Play LTR - - ਲ਼ - - ਲ਼ਾ - - ਲ਼ਿ - - ਲ਼ੀ - - ਲ਼ੁ - - ਲ਼ੂ - - ਲ਼ੇ - - ਲ਼ੈ - - ਲ਼ੋ - - ਲ਼ੌ - - ਲ਼ੰ - ਲ਼ਾਂ + ਲ਼ + ਲ਼ਾ + ਲ਼ਿ + ਲ਼ੀ + ਲ਼ੁ + ਲ਼ੂ + ਲ਼ੇ + ਲ਼ੈ + ਲ਼ੋ + ਲ਼ੌ + ਲ਼ੰ + ਲ਼ਾਂ Play RTL diff --git a/resources/public/scripts/muharni.js b/resources/public/scripts/muharni.js new file mode 100644 index 0000000..ab42548 --- /dev/null +++ b/resources/public/scripts/muharni.js @@ -0,0 +1,82 @@ +/** + * muharni.js + * + * Custom JavaScript functions, some dependent on JQuery, used in the `muharni` + * page. + */ + +/** + * An array for client side sound recordings made by the student. We don't + * strictly need one for each short and long character, but it will give a + * better experience for people who really get into it. + * + * There are two tables each of 39 rows and 12 columns, but we're going to + * pack both tables into the same array. So the long sounds will be rows 1 + * to 39 inclusive, and the short from 41 to 79 inclusive. + */ +const studentSounds = Array(80).fill(0).map(x => Array(13).fill(null)); + + + +function recordStudentSound() { + if (currentCell) { + $('#record-student').css('background-color', 'green'); + navigator.mediaDevices.getUserMedia({ audio: true }) + .then(stream => { + const mediaRecorder = new MediaRecorder(stream); + mediaRecorder.start(); + + const audioChunks = []; + + mediaRecorder.addEventListener("dataavailable", event => { + audioChunks.push(event.data); + }); + + setTimeout(() => { + mediaRecorder.stop(); + if (audioChunks.length > 0) { + studentSounds[currentCell.row][currentCell.col] = new Blob(audioChunks); + $('#play-student').prop('disabled', false); + } + $('#record-student').css('background-color', 'red'); + + }, 3000); + }); + } +} + +/** + * If a student sound has been recorded for the current cell, play it. + */ +function playStudentSound() { + if (currentCell) { + if (studentSounds[currentCell.row][currentCell.col] != null) { + new Audio(URL.createObjectURL(studentSounds[currentCell.row][currentCell.col])).play(); + } + } +} + + +$(document).ready(function() { + $(".entry").on("click", function(e) { + let cellId = e.currentTarget ? e.currentTarget.id : null; + + if (cellId) + { + $("#popup").css({ + 'left': e.pageX, + 'top': e.pageY + }); + + $("#character").text(e.currentTarget.innerText); + + $("#play-tutor").off("click"); /* trying to remove any previous click handler */ + $("#play-tutor").on("click", function(e){ + let audioUrl = "audio/" + cellId.slice(1) + ".mp3"; + new Audio( audioUrl).play(); + }); + + $("#popup").show(); + } + }); +}) \ No newline at end of file diff --git a/resources/public/style.css b/resources/public/style.css index 5ad6215..33c7a14 100644 --- a/resources/public/style.css +++ b/resources/public/style.css @@ -50,4 +50,5 @@ th { position: absolute; display: none; background-color: whitesmoke; + z-index: 10; } \ No newline at end of file diff --git a/src/muharni/construct.clj b/src/muharni/construct.clj index 0d3ff99..96a2551 100644 --- a/src/muharni/construct.clj +++ b/src/muharni/construct.clj @@ -83,25 +83,28 @@ "Emit a table cell describing one entry from entries with either the long or short audio clip available on click. " [^Integer row ^Integer col ^Boolean long?] - (let [audio (format - "audio/%02d%s.mp3" - (inc row) - ((columns col) (if long? :upper-latin :lower-latin))) + (let [r (inc row) + c ((columns col) (if long? :upper-latin :lower-latin)) + audio (format "audio/%02d%s.mp3" r c) char ((entries row) col)] (vector :td {:class "entry" - - :onclick (format - "showPopup( '%s', '%s', '%s', '%s')" - (if long? row (+ row 40)) - col - char - audio)} + :id (format "%s%02d%s" (if long? "l" "s") r c) + ;; :onclick (format + ;; "showPopup( '%s', '%s', '%s', '%s')" + ;; (if long? row (+ row 40)) + ;; col + ;; char + ;; audio) + } ;; (audio row col long?) - char))) + char))) ;; (entry-cell 3 4 true) (defn all-entries-cell + "Return a table cell which plays the sound for all entries in the specified + `row`, concatenated from left to right if `ltr?` is true else right to left, + and playing long recordings if `long?` is true else short recordings." [^Integer row ^Boolean ltr? ^Boolean long?] [:td {:class "play-row" :onclick (format "new Audio('audio/%s%s%02d_MP3WRAP.mp3').play();" @@ -112,6 +115,8 @@ (defn entries-row + "Return a table row for the specified `row` number for long recordings if + `long?` is true else short recordings." [^Integer row ^Boolean long?] (apply vector (concat [:tr] @@ -122,9 +127,10 @@ ;; (entries-row 3 true) (defn col-header-cell - [^Integer col] + "Return a header cell for the indicated `column`." + [^Integer column] (vector :th - (:name (columns col)))) + (:name (columns column)))) (defn col-headers-row [] @@ -136,19 +142,21 @@ ;; (col-headers-row) (defn play-column-row + "Return a table row of cells which play concatenated sounds for each column, + concatenating from top to bottom is `ttb?` is true, else bottom to top, and + playing long recordings if `long?` is true else short recordings." [^Boolean ttb? ^Boolean long?] (apply vector (concat [:tr] [[:td]] (map #(vector :td {:class "play-column" - :onclick + :onclick (format - "new Audio('audio/%s%s%s_MP3WRAP.mp3').play();" - (if ttb? "ttb" "btt") - (if long? "long" "short") - ((columns %) (if long? :upper-latin :lower-latin))) - } + "new Audio('audio/%s%s%s_MP3WRAP.mp3').play();" + (if ttb? "ttb" "btt") + (if long? "long" "short") + ((columns %) (if long? :upper-latin :lower-latin)))} (str "Play " (if ttb? "down" "up"))) (range (count columns))) [[:td]]))) @@ -156,6 +164,8 @@ ;; (play-column-row true true) (defn table + "Lay out a muharni table, playing long recordings if `long?` is true else + short recordings." [^Boolean long?] (apply vector @@ -171,6 +181,7 @@ ;; (table true) (defn page + "Construct the complete muharni tables page." [title] [:html [:head @@ -183,19 +194,19 @@ :src "scripts/muharni.js"}] [:title (str title)]] [:body {:id "body"} - [:div {:id "popup" + [:div {:id "popup" :onmouseout "hidePopup();" :style "display: none; border: thin solid gray; width: 10%"} [:p {:id "character" :style "text-align: center; margin: 0; font-size: 4em;"} "?"] [:table {:id "controls" :summary "Controls for audio playback and recording"} [:tr [:th "Tutor"] - [:td {:id "play-tutor"} [:button {:onclick "playTutorSound();"} + [:td [:button {:id "play-tutor"} "►"]]] [:tr [:th "You"] - [:td {:id "play-student"} [:button {:onclick "playStudentSound();"} "►"]] - [:td {:id "record-stop"} [:button {:onclick "recordStudentSound();"} "⏺"]]]]] + [:td [:button {:id "play-student"} "►"]] + [:td [:button {:id "record-stop"} "⏺"]]]]] [:h1 (str title)] [:button {:onclick "var l = document.getElementById('long'); var s = document.getElementById('short'); @@ -223,9 +234,7 @@ [:a {:href "https://github.com/simon-brooke/muharni"} "GitHub"]]]]]) (defn tidy-page - "Reads HTML as a string, emits cleaned-up HTML as a string. This is not yet - working with HTML as produced by Hiccup, since Hiccup is currently - entitifying single quotes within (JavaScript) strings." + "Reads HTML from `page` as a string, returns cleaned-up HTML as a string." [^String page] (let [tidy (Tidy.) props (doto (Properties.) @@ -239,14 +248,13 @@ ;; (set! (. config indentContent) true) ;; (set! (. config smartIndent) true) (doto (.getConfiguration tidy) (.addProps props) (.adjust)) - (.parse tidy (input-stream (.getBytes page)) + ;; NOTE: Hiccup is currently entitifying single quotes within + ;; (JavaScript) strings. This is NOT desirable behaviour! + (.parse tidy (input-stream (.getBytes (s/replace page #"\'" "'"))) output) - (.toString output))) + (str "\n" (.toString output)))) (spit "resources/public/index.html" (tidy-page - (s/replace - (str (html - ;;{:escape-strings? false} - (page "Muharni table"))) - #"\'" "'"))) + (str (html + (page "Muharni table")))))