diff --git a/package-lock.json b/package-lock.json index 66832d99..8d2d557c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@d-i-t-a/reader", - "version": "2.3.8", + "version": "2.3.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@d-i-t-a/reader", - "version": "2.3.8", + "version": "2.3.9", "license": "Apache-2.0", "dependencies": { "@types/pdfjs-dist": "^2.7.4", @@ -856,9 +856,9 @@ } }, "node_modules/@parcel/core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1085,9 +1085,9 @@ } }, "node_modules/@parcel/node-resolver-core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1380,9 +1380,9 @@ } }, "node_modules/@parcel/package-manager/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1675,9 +1675,9 @@ } }, "node_modules/@parcel/transformer-babel/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1731,9 +1731,9 @@ } }, "node_modules/@parcel/transformer-html/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1795,9 +1795,9 @@ "dev": true }, "node_modules/@parcel/transformer-js/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1855,9 +1855,9 @@ } }, "node_modules/@parcel/transformer-postcss/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1887,9 +1887,9 @@ } }, "node_modules/@parcel/transformer-posthtml/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1975,9 +1975,9 @@ } }, "node_modules/@parcel/transformer-svg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -4811,9 +4811,9 @@ } }, "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -5546,9 +5546,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8276,9 +8276,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -9811,9 +9811,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11382,9 +11382,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12245,9 +12245,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12377,9 +12377,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12589,9 +12589,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12769,9 +12769,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12808,9 +12808,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12853,9 +12853,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12893,9 +12893,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12916,9 +12916,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12971,9 +12971,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -15195,9 +15195,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "yallist": { @@ -15809,9 +15809,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -17778,9 +17778,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -18908,9 +18908,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -20136,9 +20136,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "worker-loader": { diff --git a/package.json b/package.json index 35241d46..d0ba0190 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@d-i-t-a/reader", - "version": "2.3.8", + "version": "2.3.9", "description": "A viewer application for EPUB files.", "repository": "https://github.com/d-i-t-a/R2D2BC", "license": "Apache-2.0", diff --git a/src/modules/TTS/TTSModule2.ts b/src/modules/TTS/TTSModule2.ts index 4fd862b3..a7b186d1 100644 --- a/src/modules/TTS/TTSModule2.ts +++ b/src/modules/TTS/TTSModule2.ts @@ -122,13 +122,13 @@ export class TTSModule2 implements ReaderModule { let doc = this.navigator.iframes[0].contentDocument; if (doc) { let selection = this.highlighter.dom(doc.body).getSelection(); - if (selection.isCollapsed) { - let doc = this.navigator.iframes[0].contentDocument; - const selectionInfo = this.navigator.annotationModule?.annotator?.getTemporarySelectionInfo( - doc - ); - selection.addRange(selectionInfo.range); - } + // if (selection.isCollapsed) { + // let doc = this.navigator.iframes[0].contentDocument; + // const selectionInfo = this.navigator.annotationModule?.annotator?.getTemporarySelectionInfo( + // doc + // ); + // selection.addRange(selectionInfo.range); + // } let range = selection.getRangeAt(0); let node = selection.anchorNode; @@ -246,6 +246,12 @@ export class TTSModule2 implements ReaderModule { partial: boolean, callback: () => void ): Promise { + if (!partial) { + if (this.navigator.rights.enableContentProtection) { + this.navigator.contentProtectionModule?.deactivate(); + } + } + if (this.api?.started) this.api?.started(); this.navigator.emit("readaloud.started", "started"); @@ -343,6 +349,11 @@ export class TTSModule2 implements ReaderModule { utterance = new SpeechSynthesisUtterance(textToBeSpoken); + utterance.rate = this.tts.rate; + utterance.pitch = this.tts.pitch; + utterance.volume = this.tts.volume; + this.setVoice(this, utterance); + log.log(selectionInfo); log.log( textToBeSpoken, @@ -376,21 +387,102 @@ export class TTSModule2 implements ReaderModule { utterance.rate = this.tts.rate; utterance.pitch = this.tts.pitch; utterance.volume = this.tts.volume; + this.setVoice(self, utterance); + + this.index = 0; + + function onend() { + utterance.onend = function () { + if (idxEnd > idx) { + idx = idx + 1; + if (idx !== idxEnd) { + const ttsQueueItem = getTtsQueueItemRef(ttsQueue, idx); + if (ttsQueueItem) { + const sentence = getTtsQueueItemRefText(ttsQueueItem); + utterance = new SpeechSynthesisUtterance(sentence); + utterance.rate = self.tts.rate; + utterance.pitch = self.tts.pitch; + utterance.volume = self.tts.volume; + self.setVoice(self, utterance); + utterance.onboundary = (ev: SpeechSynthesisEvent) => { + self.updateTTSInfo( + ttsQueueItem, + ev.charIndex, + ev.charLength, + 0, + utterance.text + ); + }; + setTimeout(() => { + window.speechSynthesis.speak(utterance); + }, 0); + onend(); + } + } else { + const ttsQueueItem = getTtsQueueItemRef(ttsQueue, idx); + if (ttsQueueItem) { + utterance = new SpeechSynthesisUtterance(restOfTheText); + utterance.rate = self.tts.rate; + utterance.pitch = self.tts.pitch; + utterance.volume = self.tts.volume; + self.setVoice(self, utterance); + utterance.onboundary = (ev: SpeechSynthesisEvent) => { + self.updateTTSInfo( + ttsQueueItem, + ev.charIndex, + ev.charLength, + 0, + utterance.text + ); + }; + setTimeout(() => { + window.speechSynthesis.speak(utterance); + }, 0); + onend(); + } + if (idx > idxEnd) { + log.log("utterance ended"); + self.highlighter.doneSpeaking(); + self.api?.finished(); + self.navigator.emit("readaloud.finished", "finished"); + } + } + } else { + log.log("utterance ended"); + self.highlighter.doneSpeaking(); + self.api?.finished(); + self.navigator.emit("readaloud.finished", "finished"); + } + }; + } + setTimeout(() => { + window.speechSynthesis.speak(utterance); + if (!partial) { + if (this.navigator.rights.enableContentProtection) { + this.navigator.contentProtectionModule?.recalculate(200); + } + } + }, 0); + + onend(); + callback(); + } + private setVoice(self: this, utterance) { log.log("this.tts.voice.lang", this.tts.voice.lang); - var initialVoiceHasHyphen = true; + let initialVoiceHasHyphen = true; if (this.tts.voice && this.tts.voice.lang) { initialVoiceHasHyphen = this.tts.voice.lang.indexOf("-") !== -1; - if (initialVoiceHasHyphen === false) { + if (!initialVoiceHasHyphen) { this.tts.voice.lang = this.tts.voice.lang.replace("_", "-"); initialVoiceHasHyphen = true; } } log.log("initialVoiceHasHyphen", initialVoiceHasHyphen); log.log("voices", this.voices); - var initialVoice; - if (initialVoiceHasHyphen === true) { + let initialVoice; + if (initialVoiceHasHyphen) { initialVoice = this.tts.voice && this.tts.voice.lang && this.tts.voice.name ? this.voices.filter((v: any) => { @@ -426,11 +518,11 @@ export class TTSModule2 implements ReaderModule { } log.log("initialVoice", initialVoice); - var publicationVoiceHasHyphen = + const publicationVoiceHasHyphen = self.navigator.publication.Metadata.Language[0].indexOf("-") !== -1; log.log("publicationVoiceHasHyphen", publicationVoiceHasHyphen); - var publicationVoice; - if (publicationVoiceHasHyphen === true) { + let publicationVoice; + if (publicationVoiceHasHyphen) { publicationVoice = this.tts.voice && this.tts.voice.usePublication ? this.voices.filter((v: any) => { @@ -462,24 +554,24 @@ export class TTSModule2 implements ReaderModule { } log.log("publicationVoice", publicationVoice); - var defaultVoiceHasHyphen = navigator.language.indexOf("-") !== -1; + const defaultVoiceHasHyphen = navigator.language.indexOf("-") !== -1; log.log("defaultVoiceHasHyphen", defaultVoiceHasHyphen); - var defaultVoice; - if (defaultVoiceHasHyphen === true) { + let defaultVoice; + if (defaultVoiceHasHyphen) { defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang.replace("_", "-"); - return lang === navigator.language && voice.localService === true; + const lang = voice.lang.replace("_", "-"); + return lang === navigator.language && voice.localService; })[0]; } else { defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang; - return lang === navigator.language && voice.localService === true; + const lang = voice.lang; + return lang === navigator.language && voice.localService; })[0]; } if (defaultVoice === undefined) { defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang; - return lang.includes(navigator.language) && voice.localService === true; + const lang = voice.lang; + return lang.includes(navigator.language) && voice.localService; })[0]; } log.log("defaultVoice", defaultVoice); @@ -500,75 +592,13 @@ export class TTSModule2 implements ReaderModule { log.log("utterance.lang", utterance.lang); } log.log("navigator.language", navigator.language); - - setTimeout(() => { - window.speechSynthesis.speak(utterance); - }, 0); - - this.index = 0; - - function onend() { - utterance.onend = function () { - if (idxEnd > idx) { - idx = idx + 1; - if (idx !== idxEnd) { - const ttsQueueItem = getTtsQueueItemRef(ttsQueue, idx); - if (ttsQueueItem) { - const sentence = getTtsQueueItemRefText(ttsQueueItem); - utterance = new SpeechSynthesisUtterance(sentence); - utterance.onboundary = (ev: SpeechSynthesisEvent) => { - self.updateTTSInfo( - ttsQueueItem, - ev.charIndex, - ev.charLength, - 0, - utterance.text - ); - }; - setTimeout(() => { - window.speechSynthesis.speak(utterance); - }, 0); - onend(); - } - } else { - const ttsQueueItem = getTtsQueueItemRef(ttsQueue, idx); - if (ttsQueueItem) { - utterance = new SpeechSynthesisUtterance(restOfTheText); - utterance.onboundary = (ev: SpeechSynthesisEvent) => { - self.updateTTSInfo( - ttsQueueItem, - ev.charIndex, - ev.charLength, - 0, - utterance.text - ); - }; - setTimeout(() => { - window.speechSynthesis.speak(utterance); - }, 0); - onend(); - } - if (idx > idxEnd) { - log.log("utterance ended"); - self.highlighter.doneSpeaking(); - self.api?.finished(); - self.navigator.emit("readaloud.finished", "finished"); - } - } - } else { - log.log("utterance ended"); - self.highlighter.doneSpeaking(); - self.api?.finished(); - self.navigator.emit("readaloud.finished", "finished"); - } - }; - } - - onend(); - callback(); } speakPlay() { + if (this.navigator.rights.enableContentProtection) { + this.navigator.contentProtectionModule?.deactivate(); + } + this.scrollPartial = true; this.cancel(false); if (this.api?.started) this.api?.started(); @@ -641,6 +671,9 @@ export class TTSModule2 implements ReaderModule { this.startTTSSession(ttsQueue, ttsQueueIndex); }, 200); } + if (this.navigator.rights.enableContentProtection) { + this.navigator.contentProtectionModule?.recalculate(200); + } } speakPause() { @@ -962,131 +995,8 @@ export class TTSModule2 implements ReaderModule { utterance.rate = this.tts.rate; utterance.pitch = this.tts.pitch; utterance.volume = this.tts.volume; - - log.log("this.tts.voice.lang", this.tts.voice.lang); - - var initialVoiceHasHyphen = true; - if (this.tts.voice && this.tts.voice.lang) { - initialVoiceHasHyphen = this.tts.voice.lang.indexOf("-") !== -1; - if (initialVoiceHasHyphen === false) { - this.tts.voice.lang = this.tts.voice.lang.replace("_", "-"); - initialVoiceHasHyphen = true; - } - } - log.log("initialVoiceHasHyphen", initialVoiceHasHyphen); - log.log("voices", this.voices); - var initialVoice; - if (initialVoiceHasHyphen === true) { - initialVoice = - this.tts.voice && this.tts.voice.lang && this.tts.voice.name - ? this.voices.filter((v: any) => { - var lang = v.lang.replace("_", "-"); - return ( - lang === this.tts.voice.lang && v.name === this.tts.voice.name - ); - })[0] - : undefined; - if (initialVoice === undefined) { - initialVoice = - this.tts.voice && this.tts.voice.lang - ? this.voices.filter( - (v: any) => v.lang.replace("_", "-") === this.tts.voice.lang - )[0] - : undefined; - } - } else { - initialVoice = - this.tts.voice && this.tts.voice.lang && this.tts.voice.name - ? this.voices.filter((v: any) => { - return ( - v.lang === this.tts.voice.lang && v.name === this.tts.voice.name - ); - })[0] - : undefined; - if (initialVoice === undefined) { - initialVoice = - this.tts.voice && this.tts.voice.lang - ? this.voices.filter((v: any) => v.lang === this.tts.voice.lang)[0] - : undefined; - } - } - log.log("initialVoice", initialVoice); - - var self = this; - var publicationVoiceHasHyphen = - self.navigator.publication.Metadata.Language[0].indexOf("-") !== -1; - log.log("publicationVoiceHasHyphen", publicationVoiceHasHyphen); - var publicationVoice; - if (publicationVoiceHasHyphen === true) { - publicationVoice = - this.tts.voice && this.tts.voice.usePublication - ? this.voices.filter((v: any) => { - var lang = v.lang.replace("_", "-"); - return ( - lang.startsWith( - self.navigator.publication.Metadata.Language[0] - ) || - lang.endsWith( - self.navigator.publication.Metadata.Language[0].toUpperCase() - ) - ); - })[0] - : undefined; - } else { - publicationVoice = - this.tts.voice && this.tts.voice.usePublication - ? this.voices.filter((v: any) => { - return ( - v.lang.startsWith( - self.navigator.publication.Metadata.Language[0] - ) || - v.lang.endsWith( - self.navigator.publication.Metadata.Language[0].toUpperCase() - ) - ); - })[0] - : undefined; - } - log.log("publicationVoice", publicationVoice); - - var defaultVoiceHasHyphen = navigator.language.indexOf("-") !== -1; - log.log("defaultVoiceHasHyphen", defaultVoiceHasHyphen); - var defaultVoice; - if (defaultVoiceHasHyphen === true) { - defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang.replace("_", "-"); - return lang === navigator.language && voice.localService === true; - })[0]; - } else { - defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang; - return lang === navigator.language && voice.localService === true; - })[0]; - } - if (defaultVoice === undefined) { - defaultVoice = this.voices.filter((voice: SpeechSynthesisVoice) => { - var lang = voice.lang; - return lang.includes(navigator.language) && voice.localService === true; - })[0]; - } - log.log("defaultVoice", defaultVoice); - - if (initialVoice) { - log.log("initialVoice"); - utterance.voice = initialVoice; - } else if (publicationVoice) { - log.log("publicationVoice"); - utterance.voice = publicationVoice; - } else if (defaultVoice) { - log.log("defaultVoice"); - utterance.voice = defaultVoice; - } - if (utterance.voice !== undefined && utterance.voice !== null) { - utterance.lang = utterance.voice.lang; - log.log("utterance.voice.lang", utterance.voice.lang); - log.log("utterance.lang", utterance.lang); - } - log.log("navigator.language", navigator.language); + const self = this; + this.setVoice(self, utterance); utterance.onboundary = (ev: SpeechSynthesisEvent) => { log.log(ev.name); @@ -1233,7 +1143,8 @@ export class TTSModule2 implements ReaderModule { range.setStart(rangeStartNode, rangeStartOffset); range.setEnd(rangeEndNode, rangeEndOffset); - var self = this; + const self = this; + function getCssSelector(element: Element): string { try { let doc = self.navigator.iframes[0].contentDocument; diff --git a/viewer/index_api.html b/viewer/index_api.html index ba15492b..93a0c2e3 100644 --- a/viewer/index_api.html +++ b/viewer/index_api.html @@ -507,7 +507,7 @@ enablePageBreaks:true, enableLineFocus:true, enableHistory: true, - enableContentProtection: false, + enableContentProtection: true, autoGeneratePositions: true }, tts: { diff --git a/viewer/index_dita.html b/viewer/index_dita.html index d44199ba..b0d98d84 100644 --- a/viewer/index_dita.html +++ b/viewer/index_dita.html @@ -748,7 +748,7 @@ { type: 'style', url: '/viewer/readium-css/ReadiumCSS-before.css', r2before: true }, { type: 'style', url: '/viewer/readium-css/ReadiumCSS-default.css', r2default: true }, { type: 'style', url: '/viewer/readium-css/ReadiumCSS-after.css', r2after: true }, - { type: 'script', url: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-MML-AM_CHTML&latest' }, + // { type: 'script', url: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-MML-AM_CHTML&latest' }, { type: 'style', url: 'https://fonts.googleapis.com/icon?family=Material+Icons'}, { type: 'style', url: '/viewer/fonts/opendyslexic/opendyslexic.css', fontFamily: 'opendyslexic' }, { type: 'style', fontFamily: 'Courier', systemFont: true }, @@ -1313,6 +1313,17 @@ }, }, api: { + getContent: function (href) { + console.log("getContent") + return new Promise(async function (resolve) { + await fetch(href) + .then((r) => r.text()) + .then(async (data) => { + resolve(data); + }); + }); + }, + resourceReady: function() { console.log("resourceReady"); // d2reader.applyUserSettings({fontFamily: 'opendyslexic'})