From 62e4a4283fc63749424d6c3df656f8bf65c54d46 Mon Sep 17 00:00:00 2001 From: or-else Date: Sun, 27 Mar 2022 11:31:54 -0700 Subject: [PATCH] Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=642012 --- README.md | 2 +- package-lock.json | 29 +- package.json | 2 +- src/widgets/audio-recorder.jsx | 27 +- umd/index.dev.js | 565 ++++++++++++++++++++++++++++++++- umd/index.dev.js.map | 2 +- umd/index.prod.js | 2 +- umd/index.prod.js.map | 2 +- webpack.config.js | 4 +- 9 files changed, 591 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 213aafd2..1430b291 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Overall, it's a lot like open source WhatsApp or Telegram web apps. Although the app is generally usable, keep in mind that this is work in progress. Some bugs probably exist, some features are missing. The app was tested in the latest Chrome & Firefox only. NPM package is [available](https://www.npmjs.com/package/tinode-webapp). -Try possibly newer or older version live at https://web.tinode.co/. +Try possibly newer or older version live at https://sandbox.tinode.co/. diff --git a/package-lock.json b/package-lock.json index 932a5b34..9500ba0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,20 @@ { "name": "tinode-webapp", - "version": "0.18.3-beta1", + "version": "0.19.0-alpha1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "tinode-webapp", - "version": "0.18.3-beta1", + "version": "0.19.0-alpha1", "license": "Apache-2.0", "dependencies": { "firebase": "^9.6.7", + "fix-webm-duration": "^1.0.5", "react": "^17.0.2", "react-dom": "^17.0.2", "react-intl": "^5.20.2", - "tinode-sdk": "^0.18.2" + "tinode-sdk": "^0.18.3" }, "devDependencies": { "@babel/core": "^7.14.5", @@ -4274,6 +4275,11 @@ "@firebase/util": "1.4.3" } }, + "node_modules/fix-webm-duration": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fix-webm-duration/-/fix-webm-duration-1.0.5.tgz", + "integrity": "sha512-b6oula3OfSknx0aWoLsxvp4DVIYbwsf+UAkr6EDAK3iuMYk/OSNKzmeSI61GXK0MmFTEuzle19BPvTxMIKjkZg==" + }, "node_modules/fs-extra": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", @@ -6616,9 +6622,9 @@ "dev": true }, "node_modules/tinode-sdk": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.18.2.tgz", - "integrity": "sha512-K1Yt5akrRsBPmZwhpK0alhhxJ1F8EJai1svDjxbUbFfFQeTE4y4rXck+sqCQwfVjrPGCgjA/JIbuMpGTapMjbQ==" + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.18.3.tgz", + "integrity": "sha512-MKI8KL43oF3K5OEYp2Dfyfj9LYogKyE0hw0MYNmHMsg1+rHM/IbnnLLaEnlwD9hAAgmamCPY2AS6Oo2OeiCr1w==" }, "node_modules/tmp": { "version": "0.2.1", @@ -10345,6 +10351,11 @@ "@firebase/util": "1.4.3" } }, + "fix-webm-duration": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fix-webm-duration/-/fix-webm-duration-1.0.5.tgz", + "integrity": "sha512-b6oula3OfSknx0aWoLsxvp4DVIYbwsf+UAkr6EDAK3iuMYk/OSNKzmeSI61GXK0MmFTEuzle19BPvTxMIKjkZg==" + }, "fs-extra": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", @@ -12005,9 +12016,9 @@ "dev": true }, "tinode-sdk": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.18.2.tgz", - "integrity": "sha512-K1Yt5akrRsBPmZwhpK0alhhxJ1F8EJai1svDjxbUbFfFQeTE4y4rXck+sqCQwfVjrPGCgjA/JIbuMpGTapMjbQ==" + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.18.3.tgz", + "integrity": "sha512-MKI8KL43oF3K5OEYp2Dfyfj9LYogKyE0hw0MYNmHMsg1+rHM/IbnnLLaEnlwD9hAAgmamCPY2AS6Oo2OeiCr1w==" }, "tmp": { "version": "0.2.1", diff --git a/package.json b/package.json index 6b117af2..85c42562 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "tinode-webapp", "description": "Tinode messenger for the web", "version": "0.19.0-alpha1", - "repository": { "type": "git", "url": "https://github.com/tinode/example-react-js.git" @@ -68,6 +67,7 @@ "license": "Apache-2.0", "dependencies": { "firebase": "^9.6.7", + "fix-webm-duration": "^1.0.5", "react": "^17.0.2", "react-dom": "^17.0.2", "react-intl": "^5.20.2", diff --git a/src/widgets/audio-recorder.jsx b/src/widgets/audio-recorder.jsx index daf26b54..5c4f6d2a 100644 --- a/src/widgets/audio-recorder.jsx +++ b/src/widgets/audio-recorder.jsx @@ -3,6 +3,8 @@ import React from 'react'; import AudioPlayer from './audio-player.jsx'; +// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=642012 +import fixWebmDuration from 'fix-webm-duration'; import { intArrayToBase64 } from '../lib/blob-helpers.js' import { secondsToTime } from '../lib/strformat'; @@ -30,6 +32,9 @@ const VISUALIZATION_BARS = 96; // Maximum number of samples per bar. const MAX_SAMPLES_PER_BAR = 10; +// Recording format. +const AUDIO_MIME_TYPE = 'audio/webm'; + export default class AudioRecorder extends React.PureComponent { constructor(props) { super(props); @@ -224,7 +229,7 @@ export default class AudioRecorder extends React.PureComponent { initMediaRecording(stream) { this.stream = stream; - this.mediaRecorder = new MediaRecorder(stream); + this.mediaRecorder = new MediaRecorder(stream, {mimeType: AUDIO_MIME_TYPE}); // The following code is needed for visualization. this.audioContext = new AudioContext(); @@ -235,7 +240,7 @@ export default class AudioRecorder extends React.PureComponent { this.mediaRecorder.onstop = _ => { if (this.durationMillis > MIN_DURATION) { - this.getRecording() + this.getRecording(this.mediaRecorder.mimeType, this.durationMillis) .then(result => this.props.onFinished(result.url, result.preview, this.durationMillis)); } else { this.props.onDeleted(); @@ -249,7 +254,7 @@ export default class AudioRecorder extends React.PureComponent { } if (this.mediaRecorder.state != 'inactive') { - this.getRecording().then(result => { + this.getRecording(this.mediaRecorder.mimeType).then(result => { this.setState({ blobUrl: result.url, preview: result.preview @@ -265,14 +270,14 @@ export default class AudioRecorder extends React.PureComponent { } // Obtain data in a form sutable for sending or playing back. - getRecording() { - const blob = new Blob(this.audioChunks, {'type' : 'audio/mp3; codecs=mp3'}); - const url = window.URL.createObjectURL(blob); - return blob.arrayBuffer().then(ab => this.audioContext.decodeAudioData(ab)) - .then(data => this.createPreview(data)) - .then(preview => { - return {url: url, preview: intArrayToBase64(preview)} - }); + // If duration is valid, apply fix for Chrome's WebM duration bug. + getRecording(mimeType, duration) { + let blob = new Blob(this.audioChunks, {type: mimeType || AUDIO_MIME_TYPE}); + return (duration > 0 ? fixWebmDuration(blob, duration, {logger: false}) : Promise.resolve(blob)) + .then(fixedBlob => { blob = fixedBlob; return fixedBlob.arrayBuffer(); }) + .then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff)) + .then(decoded => this.createPreview(decoded)) + .then(preview => ({url: window.URL.createObjectURL(blob), preview: intArrayToBase64(preview)})); } // Preview must be calculated at the source: Chrome does not allow background AudioContext. diff --git a/umd/index.dev.js b/umd/index.dev.js index e2139793..d0cc3035 100644 --- a/umd/index.dev.js +++ b/umd/index.dev.js @@ -9958,8 +9958,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _audio_player_jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audio-player.jsx */ "./src/widgets/audio-player.jsx"); -/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js"); -/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js"); +/* harmony import */ var fix_webm_duration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fix-webm-duration */ "./node_modules/fix-webm-duration/fix-webm-duration.js"); +/* harmony import */ var fix_webm_duration__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fix_webm_duration__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js"); +/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js"); + @@ -9975,6 +9978,7 @@ const MIN_DURATION = 200; const MAX_DURATION = 600000; const VISUALIZATION_BARS = 96; const MAX_SAMPLES_PER_BAR = 10; +const AUDIO_MIME_TYPE = 'audio/webm'; class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) { constructor(props) { super(props); @@ -10049,7 +10053,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo window.requestAnimationFrame(drawFrame); const duration = this.durationMillis + (Date.now() - this.startedOn); this.setState({ - duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_3__.secondsToTime)(duration / 1000) + duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_4__.secondsToTime)(duration / 1000) }); if (duration > MAX_DURATION) { @@ -10059,7 +10063,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo this.setState({ enabled: false, recording: false, - duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_3__.secondsToTime)(this.durationMillis / 1000) + duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_4__.secondsToTime)(this.durationMillis / 1000) }); } @@ -10164,7 +10168,9 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo initMediaRecording(stream) { this.stream = stream; - this.mediaRecorder = new MediaRecorder(stream); + this.mediaRecorder = new MediaRecorder(stream, { + mimeType: AUDIO_MIME_TYPE + }); this.audioContext = new AudioContext(); this.audioInput = this.audioContext.createMediaStreamSource(stream); this.analyser = this.audioContext.createAnalyser(); @@ -10173,7 +10179,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo this.mediaRecorder.onstop = _ => { if (this.durationMillis > MIN_DURATION) { - this.getRecording().then(result => this.props.onFinished(result.url, result.preview, this.durationMillis)); + this.getRecording(this.mediaRecorder.mimeType, this.durationMillis).then(result => this.props.onFinished(result.url, result.preview, this.durationMillis)); } else { this.props.onDeleted(); } @@ -10187,7 +10193,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo } if (this.mediaRecorder.state != 'inactive') { - this.getRecording().then(result => { + this.getRecording(this.mediaRecorder.mimeType).then(result => { this.setState({ blobUrl: result.url, preview: result.preview @@ -10202,17 +10208,19 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo this.visualize(); } - getRecording() { - const blob = new Blob(this.audioChunks, { - 'type': 'audio/mp3; codecs=mp3' - }); - const url = window.URL.createObjectURL(blob); - return blob.arrayBuffer().then(ab => this.audioContext.decodeAudioData(ab)).then(data => this.createPreview(data)).then(preview => { - return { - url: url, - preview: (0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_2__.intArrayToBase64)(preview) - }; + getRecording(mimeType, duration) { + let blob = new Blob(this.audioChunks, { + type: mimeType || AUDIO_MIME_TYPE }); + return (duration > 0 ? fix_webm_duration__WEBPACK_IMPORTED_MODULE_2___default()(blob, duration, { + logger: false + }) : Promise.resolve(blob)).then(fixedBlob => { + blob = fixedBlob; + return fixedBlob.arrayBuffer(); + }).then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff)).then(decoded => this.createPreview(decoded)).then(preview => ({ + url: window.URL.createObjectURL(blob), + preview: (0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_3__.intArrayToBase64)(preview) + })); } createPreview(audio) { @@ -16333,6 +16341,529 @@ __webpack_require__.r(__webpack_exports__); //# sourceMappingURL=index.esm.js.map +/***/ }), + +/***/ "./node_modules/fix-webm-duration/fix-webm-duration.js": +/*!*************************************************************!*\ + !*** ./node_modules/fix-webm-duration/fix-webm-duration.js ***! + \*************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (name, definition) { + if (true) { // RequireJS / AMD + !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : + __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} +})('fix-webm-duration', function () { + /* + * This is the list of possible WEBM file sections by their IDs. + * Possible types: Container, Binary, Uint, Int, String, Float, Date + */ + var sections = { + 0xa45dfa3: { name: 'EBML', type: 'Container' }, + 0x286: { name: 'EBMLVersion', type: 'Uint' }, + 0x2f7: { name: 'EBMLReadVersion', type: 'Uint' }, + 0x2f2: { name: 'EBMLMaxIDLength', type: 'Uint' }, + 0x2f3: { name: 'EBMLMaxSizeLength', type: 'Uint' }, + 0x282: { name: 'DocType', type: 'String' }, + 0x287: { name: 'DocTypeVersion', type: 'Uint' }, + 0x285: { name: 'DocTypeReadVersion', type: 'Uint' }, + 0x6c: { name: 'Void', type: 'Binary' }, + 0x3f: { name: 'CRC-32', type: 'Binary' }, + 0xb538667: { name: 'SignatureSlot', type: 'Container' }, + 0x3e8a: { name: 'SignatureAlgo', type: 'Uint' }, + 0x3e9a: { name: 'SignatureHash', type: 'Uint' }, + 0x3ea5: { name: 'SignaturePublicKey', type: 'Binary' }, + 0x3eb5: { name: 'Signature', type: 'Binary' }, + 0x3e5b: { name: 'SignatureElements', type: 'Container' }, + 0x3e7b: { name: 'SignatureElementList', type: 'Container' }, + 0x2532: { name: 'SignedElement', type: 'Binary' }, + 0x8538067: { name: 'Segment', type: 'Container' }, + 0x14d9b74: { name: 'SeekHead', type: 'Container' }, + 0xdbb: { name: 'Seek', type: 'Container' }, + 0x13ab: { name: 'SeekID', type: 'Binary' }, + 0x13ac: { name: 'SeekPosition', type: 'Uint' }, + 0x549a966: { name: 'Info', type: 'Container' }, + 0x33a4: { name: 'SegmentUID', type: 'Binary' }, + 0x3384: { name: 'SegmentFilename', type: 'String' }, + 0x1cb923: { name: 'PrevUID', type: 'Binary' }, + 0x1c83ab: { name: 'PrevFilename', type: 'String' }, + 0x1eb923: { name: 'NextUID', type: 'Binary' }, + 0x1e83bb: { name: 'NextFilename', type: 'String' }, + 0x444: { name: 'SegmentFamily', type: 'Binary' }, + 0x2924: { name: 'ChapterTranslate', type: 'Container' }, + 0x29fc: { name: 'ChapterTranslateEditionUID', type: 'Uint' }, + 0x29bf: { name: 'ChapterTranslateCodec', type: 'Uint' }, + 0x29a5: { name: 'ChapterTranslateID', type: 'Binary' }, + 0xad7b1: { name: 'TimecodeScale', type: 'Uint' }, + 0x489: { name: 'Duration', type: 'Float' }, + 0x461: { name: 'DateUTC', type: 'Date' }, + 0x3ba9: { name: 'Title', type: 'String' }, + 0xd80: { name: 'MuxingApp', type: 'String' }, + 0x1741: { name: 'WritingApp', type: 'String' }, + // 0xf43b675: { name: 'Cluster', type: 'Container' }, + 0x67: { name: 'Timecode', type: 'Uint' }, + 0x1854: { name: 'SilentTracks', type: 'Container' }, + 0x18d7: { name: 'SilentTrackNumber', type: 'Uint' }, + 0x27: { name: 'Position', type: 'Uint' }, + 0x2b: { name: 'PrevSize', type: 'Uint' }, + 0x23: { name: 'SimpleBlock', type: 'Binary' }, + 0x20: { name: 'BlockGroup', type: 'Container' }, + 0x21: { name: 'Block', type: 'Binary' }, + 0x22: { name: 'BlockVirtual', type: 'Binary' }, + 0x35a1: { name: 'BlockAdditions', type: 'Container' }, + 0x26: { name: 'BlockMore', type: 'Container' }, + 0x6e: { name: 'BlockAddID', type: 'Uint' }, + 0x25: { name: 'BlockAdditional', type: 'Binary' }, + 0x1b: { name: 'BlockDuration', type: 'Uint' }, + 0x7a: { name: 'ReferencePriority', type: 'Uint' }, + 0x7b: { name: 'ReferenceBlock', type: 'Int' }, + 0x7d: { name: 'ReferenceVirtual', type: 'Int' }, + 0x24: { name: 'CodecState', type: 'Binary' }, + 0x35a2: { name: 'DiscardPadding', type: 'Int' }, + 0xe: { name: 'Slices', type: 'Container' }, + 0x68: { name: 'TimeSlice', type: 'Container' }, + 0x4c: { name: 'LaceNumber', type: 'Uint' }, + 0x4d: { name: 'FrameNumber', type: 'Uint' }, + 0x4b: { name: 'BlockAdditionID', type: 'Uint' }, + 0x4e: { name: 'Delay', type: 'Uint' }, + 0x4f: { name: 'SliceDuration', type: 'Uint' }, + 0x48: { name: 'ReferenceFrame', type: 'Container' }, + 0x49: { name: 'ReferenceOffset', type: 'Uint' }, + 0x4a: { name: 'ReferenceTimeCode', type: 'Uint' }, + 0x2f: { name: 'EncryptedBlock', type: 'Binary' }, + 0x654ae6b: { name: 'Tracks', type: 'Container' }, + 0x2e: { name: 'TrackEntry', type: 'Container' }, + 0x57: { name: 'TrackNumber', type: 'Uint' }, + 0x33c5: { name: 'TrackUID', type: 'Uint' }, + 0x3: { name: 'TrackType', type: 'Uint' }, + 0x39: { name: 'FlagEnabled', type: 'Uint' }, + 0x8: { name: 'FlagDefault', type: 'Uint' }, + 0x15aa: { name: 'FlagForced', type: 'Uint' }, + 0x1c: { name: 'FlagLacing', type: 'Uint' }, + 0x2de7: { name: 'MinCache', type: 'Uint' }, + 0x2df8: { name: 'MaxCache', type: 'Uint' }, + 0x3e383: { name: 'DefaultDuration', type: 'Uint' }, + 0x34e7a: { name: 'DefaultDecodedFieldDuration', type: 'Uint' }, + 0x3314f: { name: 'TrackTimecodeScale', type: 'Float' }, + 0x137f: { name: 'TrackOffset', type: 'Int' }, + 0x15ee: { name: 'MaxBlockAdditionID', type: 'Uint' }, + 0x136e: { name: 'Name', type: 'String' }, + 0x2b59c: { name: 'Language', type: 'String' }, + 0x6: { name: 'CodecID', type: 'String' }, + 0x23a2: { name: 'CodecPrivate', type: 'Binary' }, + 0x58688: { name: 'CodecName', type: 'String' }, + 0x3446: { name: 'AttachmentLink', type: 'Uint' }, + 0x1a9697: { name: 'CodecSettings', type: 'String' }, + 0x1b4040: { name: 'CodecInfoURL', type: 'String' }, + 0x6b240: { name: 'CodecDownloadURL', type: 'String' }, + 0x2a: { name: 'CodecDecodeAll', type: 'Uint' }, + 0x2fab: { name: 'TrackOverlay', type: 'Uint' }, + 0x16aa: { name: 'CodecDelay', type: 'Uint' }, + 0x16bb: { name: 'SeekPreRoll', type: 'Uint' }, + 0x2624: { name: 'TrackTranslate', type: 'Container' }, + 0x26fc: { name: 'TrackTranslateEditionUID', type: 'Uint' }, + 0x26bf: { name: 'TrackTranslateCodec', type: 'Uint' }, + 0x26a5: { name: 'TrackTranslateTrackID', type: 'Binary' }, + 0x60: { name: 'Video', type: 'Container' }, + 0x1a: { name: 'FlagInterlaced', type: 'Uint' }, + 0x13b8: { name: 'StereoMode', type: 'Uint' }, + 0x13c0: { name: 'AlphaMode', type: 'Uint' }, + 0x13b9: { name: 'OldStereoMode', type: 'Uint' }, + 0x30: { name: 'PixelWidth', type: 'Uint' }, + 0x3a: { name: 'PixelHeight', type: 'Uint' }, + 0x14aa: { name: 'PixelCropBottom', type: 'Uint' }, + 0x14bb: { name: 'PixelCropTop', type: 'Uint' }, + 0x14cc: { name: 'PixelCropLeft', type: 'Uint' }, + 0x14dd: { name: 'PixelCropRight', type: 'Uint' }, + 0x14b0: { name: 'DisplayWidth', type: 'Uint' }, + 0x14ba: { name: 'DisplayHeight', type: 'Uint' }, + 0x14b2: { name: 'DisplayUnit', type: 'Uint' }, + 0x14b3: { name: 'AspectRatioType', type: 'Uint' }, + 0xeb524: { name: 'ColourSpace', type: 'Binary' }, + 0xfb523: { name: 'GammaValue', type: 'Float' }, + 0x383e3: { name: 'FrameRate', type: 'Float' }, + 0x61: { name: 'Audio', type: 'Container' }, + 0x35: { name: 'SamplingFrequency', type: 'Float' }, + 0x38b5: { name: 'OutputSamplingFrequency', type: 'Float' }, + 0x1f: { name: 'Channels', type: 'Uint' }, + 0x3d7b: { name: 'ChannelPositions', type: 'Binary' }, + 0x2264: { name: 'BitDepth', type: 'Uint' }, + 0x62: { name: 'TrackOperation', type: 'Container' }, + 0x63: { name: 'TrackCombinePlanes', type: 'Container' }, + 0x64: { name: 'TrackPlane', type: 'Container' }, + 0x65: { name: 'TrackPlaneUID', type: 'Uint' }, + 0x66: { name: 'TrackPlaneType', type: 'Uint' }, + 0x69: { name: 'TrackJoinBlocks', type: 'Container' }, + 0x6d: { name: 'TrackJoinUID', type: 'Uint' }, + 0x40: { name: 'TrickTrackUID', type: 'Uint' }, + 0x41: { name: 'TrickTrackSegmentUID', type: 'Binary' }, + 0x46: { name: 'TrickTrackFlag', type: 'Uint' }, + 0x47: { name: 'TrickMasterTrackUID', type: 'Uint' }, + 0x44: { name: 'TrickMasterTrackSegmentUID', type: 'Binary' }, + 0x2d80: { name: 'ContentEncodings', type: 'Container' }, + 0x2240: { name: 'ContentEncoding', type: 'Container' }, + 0x1031: { name: 'ContentEncodingOrder', type: 'Uint' }, + 0x1032: { name: 'ContentEncodingScope', type: 'Uint' }, + 0x1033: { name: 'ContentEncodingType', type: 'Uint' }, + 0x1034: { name: 'ContentCompression', type: 'Container' }, + 0x254: { name: 'ContentCompAlgo', type: 'Uint' }, + 0x255: { name: 'ContentCompSettings', type: 'Binary' }, + 0x1035: { name: 'ContentEncryption', type: 'Container' }, + 0x7e1: { name: 'ContentEncAlgo', type: 'Uint' }, + 0x7e2: { name: 'ContentEncKeyID', type: 'Binary' }, + 0x7e3: { name: 'ContentSignature', type: 'Binary' }, + 0x7e4: { name: 'ContentSigKeyID', type: 'Binary' }, + 0x7e5: { name: 'ContentSigAlgo', type: 'Uint' }, + 0x7e6: { name: 'ContentSigHashAlgo', type: 'Uint' }, + 0xc53bb6b: { name: 'Cues', type: 'Container' }, + 0x3b: { name: 'CuePoint', type: 'Container' }, + 0x33: { name: 'CueTime', type: 'Uint' }, + 0x37: { name: 'CueTrackPositions', type: 'Container' }, + 0x77: { name: 'CueTrack', type: 'Uint' }, + 0x71: { name: 'CueClusterPosition', type: 'Uint' }, + 0x70: { name: 'CueRelativePosition', type: 'Uint' }, + 0x32: { name: 'CueDuration', type: 'Uint' }, + 0x1378: { name: 'CueBlockNumber', type: 'Uint' }, + 0x6a: { name: 'CueCodecState', type: 'Uint' }, + 0x5b: { name: 'CueReference', type: 'Container' }, + 0x16: { name: 'CueRefTime', type: 'Uint' }, + 0x17: { name: 'CueRefCluster', type: 'Uint' }, + 0x135f: { name: 'CueRefNumber', type: 'Uint' }, + 0x6b: { name: 'CueRefCodecState', type: 'Uint' }, + 0x941a469: { name: 'Attachments', type: 'Container' }, + 0x21a7: { name: 'AttachedFile', type: 'Container' }, + 0x67e: { name: 'FileDescription', type: 'String' }, + 0x66e: { name: 'FileName', type: 'String' }, + 0x660: { name: 'FileMimeType', type: 'String' }, + 0x65c: { name: 'FileData', type: 'Binary' }, + 0x6ae: { name: 'FileUID', type: 'Uint' }, + 0x675: { name: 'FileReferral', type: 'Binary' }, + 0x661: { name: 'FileUsedStartTime', type: 'Uint' }, + 0x662: { name: 'FileUsedEndTime', type: 'Uint' }, + 0x43a770: { name: 'Chapters', type: 'Container' }, + 0x5b9: { name: 'EditionEntry', type: 'Container' }, + 0x5bc: { name: 'EditionUID', type: 'Uint' }, + 0x5bd: { name: 'EditionFlagHidden', type: 'Uint' }, + 0x5db: { name: 'EditionFlagDefault', type: 'Uint' }, + 0x5dd: { name: 'EditionFlagOrdered', type: 'Uint' }, + 0x36: { name: 'ChapterAtom', type: 'Container' }, + 0x33c4: { name: 'ChapterUID', type: 'Uint' }, + 0x1654: { name: 'ChapterStringUID', type: 'String' }, + 0x11: { name: 'ChapterTimeStart', type: 'Uint' }, + 0x12: { name: 'ChapterTimeEnd', type: 'Uint' }, + 0x18: { name: 'ChapterFlagHidden', type: 'Uint' }, + 0x598: { name: 'ChapterFlagEnabled', type: 'Uint' }, + 0x2e67: { name: 'ChapterSegmentUID', type: 'Binary' }, + 0x2ebc: { name: 'ChapterSegmentEditionUID', type: 'Uint' }, + 0x23c3: { name: 'ChapterPhysicalEquiv', type: 'Uint' }, + 0xf: { name: 'ChapterTrack', type: 'Container' }, + 0x9: { name: 'ChapterTrackNumber', type: 'Uint' }, + 0x0: { name: 'ChapterDisplay', type: 'Container' }, + 0x5: { name: 'ChapString', type: 'String' }, + 0x37c: { name: 'ChapLanguage', type: 'String' }, + 0x37e: { name: 'ChapCountry', type: 'String' }, + 0x2944: { name: 'ChapProcess', type: 'Container' }, + 0x2955: { name: 'ChapProcessCodecID', type: 'Uint' }, + 0x50d: { name: 'ChapProcessPrivate', type: 'Binary' }, + 0x2911: { name: 'ChapProcessCommand', type: 'Container' }, + 0x2922: { name: 'ChapProcessTime', type: 'Uint' }, + 0x2933: { name: 'ChapProcessData', type: 'Binary' }, + 0x254c367: { name: 'Tags', type: 'Container' }, + 0x3373: { name: 'Tag', type: 'Container' }, + 0x23c0: { name: 'Targets', type: 'Container' }, + 0x28ca: { name: 'TargetTypeValue', type: 'Uint' }, + 0x23ca: { name: 'TargetType', type: 'String' }, + 0x23c5: { name: 'TagTrackUID', type: 'Uint' }, + 0x23c9: { name: 'TagEditionUID', type: 'Uint' }, + 0x23c4: { name: 'TagChapterUID', type: 'Uint' }, + 0x23c6: { name: 'TagAttachmentUID', type: 'Uint' }, + 0x27c8: { name: 'SimpleTag', type: 'Container' }, + 0x5a3: { name: 'TagName', type: 'String' }, + 0x47a: { name: 'TagLanguage', type: 'String' }, + 0x484: { name: 'TagDefault', type: 'Uint' }, + 0x487: { name: 'TagString', type: 'String' }, + 0x485: { name: 'TagBinary', type: 'Binary' } + }; + + function doInherit(newClass, baseClass) { + newClass.prototype = Object.create(baseClass.prototype); + newClass.prototype.constructor = newClass; + } + + function WebmBase(name, type) { + this.name = name || 'Unknown'; + this.type = type || 'Unknown'; + } + WebmBase.prototype.updateBySource = function() { }; + WebmBase.prototype.setSource = function(source) { + this.source = source; + this.updateBySource(); + }; + WebmBase.prototype.updateByData = function() { }; + WebmBase.prototype.setData = function(data) { + this.data = data; + this.updateByData(); + }; + + function WebmUint(name, type) { + WebmBase.call(this, name, type || 'Uint'); + } + doInherit(WebmUint, WebmBase); + function padHex(hex) { + return hex.length % 2 === 1 ? '0' + hex : hex; + } + WebmUint.prototype.updateBySource = function() { + // use hex representation of a number instead of number value + this.data = ''; + for (var i = 0; i < this.source.length; i++) { + var hex = this.source[i].toString(16); + this.data += padHex(hex); + } + }; + WebmUint.prototype.updateByData = function() { + var length = this.data.length / 2; + this.source = new Uint8Array(length); + for (var i = 0; i < length; i++) { + var hex = this.data.substr(i * 2, 2); + this.source[i] = parseInt(hex, 16); + } + }; + WebmUint.prototype.getValue = function() { + return parseInt(this.data, 16); + }; + WebmUint.prototype.setValue = function(value) { + this.setData(padHex(value.toString(16))); + }; + + function WebmFloat(name, type) { + WebmBase.call(this, name, type || 'Float'); + } + doInherit(WebmFloat, WebmBase); + WebmFloat.prototype.getFloatArrayType = function() { + return this.source && this.source.length === 4 ? Float32Array : Float64Array; + }; + WebmFloat.prototype.updateBySource = function() { + var byteArray = this.source.reverse(); + var floatArrayType = this.getFloatArrayType(); + var floatArray = new floatArrayType(byteArray.buffer); + this.data = floatArray[0]; + }; + WebmFloat.prototype.updateByData = function() { + var floatArrayType = this.getFloatArrayType(); + var floatArray = new floatArrayType([ this.data ]); + var byteArray = new Uint8Array(floatArray.buffer); + this.source = byteArray.reverse(); + }; + WebmFloat.prototype.getValue = function() { + return this.data; + }; + WebmFloat.prototype.setValue = function(value) { + this.setData(value); + }; + + function WebmContainer(name, type) { + WebmBase.call(this, name, type || 'Container'); + } + doInherit(WebmContainer, WebmBase); + WebmContainer.prototype.readByte = function() { + return this.source[this.offset++]; + }; + WebmContainer.prototype.readUint = function() { + var firstByte = this.readByte(); + var bytes = 8 - firstByte.toString(2).length; + var value = firstByte - (1 << (7 - bytes)); + for (var i = 0; i < bytes; i++) { + // don't use bit operators to support x86 + value *= 256; + value += this.readByte(); + } + return value; + }; + WebmContainer.prototype.updateBySource = function() { + this.data = []; + for (this.offset = 0; this.offset < this.source.length; this.offset = end) { + var id = this.readUint(); + var len = this.readUint(); + var end = Math.min(this.offset + len, this.source.length); + var data = this.source.slice(this.offset, end); + + var info = sections[id] || { name: 'Unknown', type: 'Unknown' }; + var ctr = WebmBase; + switch (info.type) { + case 'Container': + ctr = WebmContainer; + break; + case 'Uint': + ctr = WebmUint; + break; + case 'Float': + ctr = WebmFloat; + break; + } + var section = new ctr(info.name, info.type); + section.setSource(data); + this.data.push({ + id: id, + idHex: id.toString(16), + data: section + }); + } + }; + WebmContainer.prototype.writeUint = function(x, draft) { + for (var bytes = 1, flag = 0x80; x >= flag && bytes < 8; bytes++, flag *= 0x80) { } + + if (!draft) { + var value = flag + x; + for (var i = bytes - 1; i >= 0; i--) { + // don't use bit operators to support x86 + var c = value % 256; + this.source[this.offset + i] = c; + value = (value - c) / 256; + } + } + + this.offset += bytes; + }; + WebmContainer.prototype.writeSections = function(draft) { + this.offset = 0; + for (var i = 0; i < this.data.length; i++) { + var section = this.data[i], + content = section.data.source, + contentLength = content.length; + this.writeUint(section.id, draft); + this.writeUint(contentLength, draft); + if (!draft) { + this.source.set(content, this.offset); + } + this.offset += contentLength; + } + return this.offset; + }; + WebmContainer.prototype.updateByData = function() { + // run without accessing this.source to determine total length - need to know it to create Uint8Array + var length = this.writeSections('draft'); + this.source = new Uint8Array(length); + // now really write data + this.writeSections(); + }; + WebmContainer.prototype.getSectionById = function(id) { + for (var i = 0; i < this.data.length; i++) { + var section = this.data[i]; + if (section.id === id) { + return section.data; + } + } + return null; + }; + + function WebmFile(source) { + WebmContainer.call(this, 'File', 'File'); + this.setSource(source); + } + doInherit(WebmFile, WebmContainer); + WebmFile.prototype.fixDuration = function(duration, options) { + var logger = options && options.logger; + if (logger === undefined) { + logger = function(message) { + console.log(message); + }; + } else if (!logger) { + logger = function() { }; + } + + var segmentSection = this.getSectionById(0x8538067); + if (!segmentSection) { + logger('[fix-webm-duration] Segment section is missing'); + return false; + } + + var infoSection = segmentSection.getSectionById(0x549a966); + if (!infoSection) { + logger('[fix-webm-duration] Info section is missing'); + return false; + } + + var timeScaleSection = infoSection.getSectionById(0xad7b1); + if (!timeScaleSection) { + logger('[fix-webm-duration] TimecodeScale section is missing'); + return false; + } + + var durationSection = infoSection.getSectionById(0x489); + if (durationSection) { + if (durationSection.getValue() <= 0) { + logger('[fix-webm-duration] Duration section is present, but the value is empty'); + durationSection.setValue(duration); + } else { + logger('[fix-webm-duration] Duration section is present'); + return false; + } + } else { + logger('[fix-webm-duration] Duration section is missing'); + // append Duration section + durationSection = new WebmFloat('Duration', 'Float'); + durationSection.setValue(duration); + infoSection.data.push({ + id: 0x489, + data: durationSection + }); + } + + // set default time scale to 1 millisecond (1000000 nanoseconds) + timeScaleSection.setValue(1000000); + infoSection.updateByData(); + segmentSection.updateByData(); + this.updateByData(); + + return true; + }; + WebmFile.prototype.toBlob = function(mimeType) { + return new Blob([ this.source.buffer ], { type: mimeType || 'video/webm' }); + }; + + function fixWebmDuration(blob, duration, callback, options) { + // The callback may be omitted - then the third argument is options + if (typeof callback === "object") { + options = callback; + callback = undefined; + } + + if (!callback) { + return new Promise(function(resolve) { + fixWebmDuration(blob, duration, resolve, options); + }); + } + + try { + var reader = new FileReader(); + reader.onloadend = function() { + try { + var file = new WebmFile(new Uint8Array(reader.result)); + if (file.fixDuration(duration, options)) { + blob = file.toBlob(blob.type); + } + } catch (ex) { + // ignore + } + callback(blob); + }; + reader.readAsArrayBuffer(blob); + } catch (ex) { + callback(blob); + } + } + + // Support AMD import default + fixWebmDuration.default = fixWebmDuration; + + return fixWebmDuration; +}); + + /***/ }), /***/ "./node_modules/idb/build/idb.js": diff --git a/umd/index.dev.js.map b/umd/index.dev.js.map index 54497d6a..40ef14a3 100644 --- a/umd/index.dev.js.map +++ b/umd/index.dev.js.map @@ -1 +1 @@ -{"version":3,"file":"index.dev.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa,GAAG,KAAK;AACjD;AACA;AACA;AACA,+BAA+B,iBAAiB,IAAI,SAAS,GAAG,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD,KAAK;AACL;AACA,mBAAmB,MAAM,IAAI;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ,UAAU,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEkzB;AAClzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC12DA;AAGO,MAAMC,QAAQ,GAAG,gBAAgBD,wDAAe,IAAI,MAAnC,CAAjB;AAGA,MAAME,OAAO,GAAG,kCAAhB;AAGA,MAAMC,WAAW,GAAG;AAACC,EAAAA,MAAM,EAAE,eAAT;AAA0BC,EAAAA,KAAK,EAAE;AAAjC,CAApB;AAGA,MAAMC,YAAY,GAAGH,WAAW,CAACC,MAAjC;AAGA,MAAMG,eAAe,GAAG,IAAxB;AAGA,MAAMC,cAAc,GAAG,IAAE,IAAzB;AAEA,MAAMC,cAAc,GAAG,GAAvB;AAEA,MAAMC,UAAU,GAAG,IAAnB;AAGA,MAAMC,cAAc,GAAG,CAAvB;AAEA,MAAMC,cAAc,GAAG,EAAvB;AAEA,MAAMC,aAAa,GAAG,EAAtB;AAGA,MAAMC,uBAAuB,GAAG,OAAhC;AAEA,MAAMC,mBAAmB,GAAG,SAA5B;AAEA,MAAMC,mBAAmB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EA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD,aAAa;;AAE9D,CAAC;;;;;;;;;;;;AC3TD;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoE;AACuB;AAClC;AACV;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,GAAG,gBAAgB;AAC7D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAM;;AAEzB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,sCAAsC,SAAS;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,8DAA8D,SAAS;AACvE,iEAAiE,SAAS;AAC1E,6DAA6D,SAAS;AACtE,oEAAoE,SAAS;AAC7E;AACA;AACA;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,sBAAsB;AACtB;AACA,mCAAmC,iEAAiE;AACpG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB,YAAY,yDAAS;AACrB;AACA;AACA;AACA,8EAA8E,eAAe;AAC7F;AACA;AACA,0BAA0B,mEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,kBAAkB,QAAQ;AAC7E;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,2BAA2B,0DAAS,IAAI,QAAQ,oBAAoB,kBAAkB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2R;AAC3R;;;;;;;;;;;;;;;;;;;ACjlB0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,eAAe,UAAU;AAC1F;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,gBAAgB,eAAe;AAC/B;AACA;AACA,2BAA2B,UAAU,GAAG,qBAAqB;AAC7D;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB,mCAAmC,UAAU;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEmD;AACnD;;;;;;;;;;;;;;;;;;;;;;;;ACxZ0F;AAC1C;AACa;AAChC;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA,+CAA+C,cAAc,4BAA4B,cAAc,cAAc,GAAG,eAAe;AACvI;AACA;AACA;AACA,0BAA0B,wDAAY;AACtC;AACA;AACA,6BAA6B,yDAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,cAAc,sBAAsB,YAAY,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB,EAAE,aAAa;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,KAAK;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB,GAAG,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mCAAmC;AAC7E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,KAAK;AACxD,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe,aAAa,sCAAsC;AACnH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uEAAuE,wBAAwB,WAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wBAAwB,aAAa,sCAAsC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe,gCAAgC;AACxF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,IAAI,iCAAiC;AACrC,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA,gCAAgC,qDAAM;AACtC,8BAA8B,2DAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,2DAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAe;AACf;AACA,8DAAe;;AAE+D;AAC9E;;;;;;;;;;;;;;;;;;;ACjnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,KAAK,cAAc;AACnD;AACA;AACA,sFAAsF,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAE4D;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;;AC1NiC;AACe;AACT;AAC+F;AAC5C;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI,qBAAqB;AAC3J,qHAAqH,WAAW;AAChI;AACA;AACA,yBAAyB,WAAW;AACpC,8GAA8G,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,mBAAmB;AAC1G;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,MAAM;AAC7F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,WAAW;AAClC,cAAc,SAAS,YAAY,UAAU;AAC7C;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU;AAC/D,KAAK;AACL;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB,6CAA6C;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,8DAAe;AACnB;AACA,IAAI,8DAAe;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,yEAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAoB;AAC5B,QAAQ,iEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,WAAW,2DAAY,CAAC,kEAAkB;AAC1C;AACA;AACA,mBAAmB,iBAAiB;AACpC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA,wDAAwD,iBAAiB;AACzE,QAAQ,iBAAiB;AACzB;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEoH;AACpH;;;;;;;;;;;;;;;;;;UCtsCA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AAEA;AAEA;AACA;AACA;AAIA,MAAM;AAAE/6B,EAAAA;AAAF,IAAaJ,uEAAA,CAA4BpG,MAAM,CAAC+E,QAAP,CAAgBuB,IAA5C,CAAnB;AACA,MAAMyB,QAAQ,GAAIvB,MAAM,IAAIA,MAAM,CAACm7C,EAAlB,IACd95C,SAAS,CAAC+5C,SAAV,IAAuB/5C,SAAS,CAAC+5C,SAAV,CAAoB,CAApB,CADT,IAEf/5C,SAAS,CAACE,QAFK,IAGfF,SAAS,CAACC,YAHK,IAIf,IAJF;AAOA,MAAM+5C,YAAY,GAAG95C,QAAQ,CAACunC,WAAT,GAAuBlyC,KAAvB,CAA6B,MAA7B,EAAqC,CAArC,CAArB;AAGA,MAAM0kD,QAAQ,GAAGJ,2CAAW,CAAC35C,QAAD,CAAX,GAAwBA,QAAxB,GAAmC25C,2CAAW,CAACG,YAAD,CAAX,GAA4BA,YAA5B,GAA2C,IAA/F;AACA,MAAM7gD,QAAQ,GAAG0gD,2CAAW,CAACI,QAAD,CAA5B;AAGAnmD,QAAQ,CAAC4O,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,EAAyCw3C,YAAzC,CAAsD,MAAtD,EAA8DD,QAA9D;AAEAN,uDAAA,CACE,2DAAC,yDAAD,QACE,2DAAC,oDAAD;AAAc,QAAM,EAAEz5C,QAAtB;AAAgC,UAAQ,EAAE/G,QAA1C;AAAoD,eAAa,EAAEX,uDAAcoD;AAAjF,GACE,2DAAC,6DAAD,OADF,CADF,CADF,EAME9H,QAAQ,CAAC0O,cAAT,CAAwB,YAAxB,CANF,E","sources":["webpack://tinode-webapp/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/lib/formatters.js","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/audio-player.jsx","webpack://tinode-webapp/./src/widgets/audio-recorder.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/forward-dialog.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/widgets/lazy-image.jsx","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./node_modules/firebase/app/dist/index.esm.js","webpack://tinode-webapp/./node_modules/firebase/messaging/dist/index.esm.js","webpack://tinode-webapp/./node_modules/idb/build/idb.js","webpack://tinode-webapp/external var \"React\"","webpack://tinode-webapp/external var \"ReactDOM\"","webpack://tinode-webapp/external var \"ReactIntl\"","webpack://tinode-webapp/external var \"Tinode\"","webpack://tinode-webapp/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/global","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/webpack/runtime/make namespace object","webpack://tinode-webapp/./src/index.js"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if (e.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3*1000;\n// Delay before sending a {note} for reciving a message, milliseconds.\nexport const RECEIVED_DELAY = 500;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1000;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 36;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Length of a quote in quoted reply (for outgoing messages).\nexport const QUOTED_REPLY_LENGTH = 30;\n// Length of a preview of a forwarded message.\nexport const FORWARDED_PREVIEW_LENGTH = 84;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'email:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n","// File and image helper functions.\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.ref) {\n return photo.ref\n }\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// Returns a promise which is resolven on success or rejected on failure.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n reject(new Error(\"Image format unrecognized\"));\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(img.width, img.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n reject(new Error(\"Invalid image\"));\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n reject(new Error(\"Unsupported image format\"));\n return;\n }\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n resolve({mime: mime, blob: blob, width: dim.dstWidth, height: dim.dstHeight, name: fileNameForMime(fileOrBlob.name, mime)});\n };\n img.src = URL.createObjectURL(fileOrBlob);\n });\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\n// returns a promise.\nexport function imageCrop(mime, objURL, left, top, width, height, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = (err) => {\n reject(new Error(\"Image format unrecognized\"));\n };\n img.onload = () => {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n canvas.toBlob((blob) => {\n // Allow GC.\n canvas = null;\n if (blob) {\n resolve({mime: mime, blob: blob, width: width, height: height});\n } else {\n reject(new Error(\"Unsupported image format\"));\n }\n }, mime);\n };\n img.src = objURL;\n });\n}\n\n// Convert file to base64 string.\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = (evt) => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: file.type, bits: reader.result.split(',')[1], name: file.name});\n };\n reader.readAsDataURL(file);\n });\n}\n\n// Convert Blob to base64 string. Returns a promise resolved with the base64 string and mime.\nexport function blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = _ => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: blob.type, bits: reader.result.split(',')[1]});\n };\n reader.readAsDataURL(blob);\n });\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n if (!Array.isArray(items)) {\n return false;\n }\n\n for (let i in items) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n onError(\"Failed to get file object from pasted file item\");\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n onImageSuccess(file);\n } else {\n onAttachmentSuccess(file);\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.error(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n\nexport function intArrayToBase64(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n try {\n let bin = '';\n new Uint8Array(arr).forEach(b => bin += String.fromCharCode(b));\n return window.btoa(bin);\n } catch (err) {}\n return null;\n}\n\nexport function base64ToIntArray(b64) {\n const arr = [];\n try {\n const bin = window.atob(b64);\n [...bin].forEach(c => {\n arr.push(c.charCodeAt(0));\n });\n return arr;\n } catch (err) {}\n return null;\n}\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","import { KNOWN_HOSTS, DEFAULT_HOST } from '../config.js';\n\n// Detect server address from the URL\nexport function detectServerAddress() {\n let host = DEFAULT_HOST;\n if (typeof window.location == 'object') {\n if (window.location.protocol == 'file:' || window.location.hostname == 'localhost') {\n host = KNOWN_HOSTS.local;\n } else if (window.location.hostname) {\n host = window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n }\n return host;\n}\n\n// Detect if the page is served over HTTPS.\nexport function isSecureConnection() {\n if (typeof window.location == 'object') {\n return window.location.protocol == 'https:';\n }\n return false;\n}\n\nexport function isLocalHost() {\n if (typeof window.location == 'object') {\n return window.location.hostname == 'localhost';\n }\n return false;\n}\n","// Helper functions for storing values in localStorage.\n// By default localStorage can store only strings, not objects or other types.\n\nexport default class LocalStorageUtil {\n // Replace old object with the new one.\n static setObject(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n // Get stored object.\n static getObject(key) {\n const value = localStorage.getItem(key);\n return value && JSON.parse(value);\n }\n\n // Partially or wholly update stored object.\n static updateObject(key, value) {\n const oldVal = this.getObject(key);\n this.setObject(key, Object.assign(oldVal || {}, value));\n }\n\n // Just a wrapper.\n static removeItem(key) {\n localStorage.removeItem(key);\n }\n}\n","// Utility class for hash navigation.\n\n// Parse hash as in http://www.example.com/path#hash as if it were\n// path and arguments.\nexport default class HashNavigation {\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach(function(part) {\n const item = part.split('=');\n if (item[0]) {\n params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + params[key]);\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = this.parseUrlHash(hash);\n parsed.params[key] = value;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = this.parseUrlHash(hash);\n delete parsed.params[key];\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = this.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to minutes:seconds, i.e. 156 sec -> 2:36.\n// If fixedMins is true, then minutes are represented by at least two digits.\nexport function secondsToTime(seconds, fixedMin) {\n let min = Math.floor(seconds / 60) | 0;\n if (fixedMin) {\n min = min < 10 ? `0${min}` : min;\n }\n let sec = (seconds % 60) | 0;\n sec = sec < 10 ? `0${sec}` : sec;\n return `${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Shorten a file name to be under maxLength by clipping out the middle.\nexport function shortenFileName(filename, maxLength) {\n if (typeof filename != 'string') {\n return filename;\n }\n return filename.length > maxLength ?\n filename.slice(0, maxLength/2 - 1) + '…' + filename.slice(1 - maxLength/2) : filename;\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nfunction stringToColorHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n\n// User avatar letter color id.\nexport function letterTileColorId(userId) {\n return Math.abs(stringToColorHash(userId)) % 16;\n}\n\n// Converts user or topic ID to a CSS color class. Ideally it should produce the same color value as Java version.\n// params:\n// - {string} id: user or topic ID\n// - {boolean} light: light or dark version of the color.\n// - {boolean} fg: foreground (text) or background color.\nexport function idToColorClass(id, light, fg) {\n return (light ? 'lt-' : 'dk-') + (fg ? 'fg-' : 'bg-') + letterTileColorId(id);\n}\n","// Odds and ends\n\nimport { Tinode } from 'tinode-sdk';\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable as a source like field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must must be of the right MIME type such as 'data:{mimeMajor}/XXXX;base64,'.\nexport function sanitizeUrlForMime(url, mimeMajor) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of the appropriate mime type?\n const re = new RegExp(`data:${mimeMajor}\\/[a-z0-9.-]+;base64,`, 'i');\n if (re.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n\n// Wraps a promise to make it cancelable.\n// The parameter can be either a promise or an error. If it's an error, the wrapped promise is\n// created in a rejected state.\nexport function cancelablePromise(promise) {\n let hasCanceled = false;\n\n const wrappedPromise = promise instanceof Error ?\n Promise.reject(promise) :\n new Promise((resolve, reject) => {\n promise.then(\n result => hasCanceled ? reject({isCanceled: true}) : resolve(result),\n error => hasCanceled ? reject({isCanceled: true}) : reject(error)\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n hasCanceled = true;\n },\n };\n};\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.19.0-alpha1\";\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\n\nexport default class EditAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCheckboxClick = this.handleCheckboxClick.bind(this);\n }\n\n handleCheckboxClick(what, checked) {\n if (what == 'sound') {\n this.props.onToggleMessageSounds(checked);\n } else if (what == 'alert') {\n this.props.onTogglePushNotifications(checked);\n } else if (what == 'incognito') {\n this.props.onToggleIncognitoMode(checked);\n }\n }\n\n render() {\n return (\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport InPlaceEdit from '../widgets/in-place-edit.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\n\nconst messages = defineMessages({\n delete_account: {\n id: 'delete_account',\n defaultMessage: 'Delete account',\n description: 'Title for delete account warning'\n },\n delete_account_warning: {\n id: 'delete_account_warning',\n defaultMessage: 'Are you sure you want to delete your account? It cannot be undone.',\n description: 'Warning message when deleting an account'\n }\n});\n\nclass AccSecurityView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n let blockedCount = 0;\n me.contacts((c) => {\n if (c.acs && !c.acs.isJoiner()) {\n blockedCount ++;\n }\n });\n const defacs = me.getDefaultAccess();\n this.state = {\n auth: defacs ? defacs.auth : null,\n anon: defacs ? defacs.anon : null,\n showPermissionEditorFor: undefined,\n blockedCount: blockedCount,\n };\n\n this.handlePasswordUpdate = this.handlePasswordUpdate.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n }\n\n handlePasswordUpdate(pwd) {\n this.setState({password: pwd});\n this.props.onUpdatePassword(pwd);\n }\n\n handleLaunchPermissionsEditor(which) {\n this.setState({\n showPermissionEditorFor: which,\n editedPermissions: this.state[which]\n });\n }\n\n handleHidePermissionsEditor() {\n this.setState({showPermissionEditorFor: undefined});\n }\n\n handlePermissionsChanged(perm) {\n let defacs = {};\n defacs[this.state.showPermissionEditorFor] = perm;\n this.props.onUpdateAccountDesc('me', undefined, undefined, defacs);\n\n let newState = {showPermissionEditorFor: undefined};\n newState[this.state.showPermissionEditorFor] = perm;\n this.setState(newState);\n }\n\n handleDeleteAccount(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.delete_account), // title\n formatMessage(messages.delete_account_warning), // content\n (() => { this.props.onDeleteAccount(); }), // onConfirm\n null, // use default text \"OK\"\n true, // Show Reject button\n null // use default text \"Cancel\"\n );\n }\n\n render() {\n return (\n <>{this.state.showPermissionEditorFor ?\n \n :\n
\n
\n \n
\n {\n (password_unchanged) => \n }\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
Auth: {this.state.auth}
\n
Anon: {this.state.anon}
\n
\n
\n {this.state.blockedCount > 0 ?\n <>\n \n }\n );\n }\n};\n\nexport default injectIntl(AccSecurityView);\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME, LINK_CONTACT_US, LINK_PRIVACY_POLICY, LINK_TERMS_OF_SERVICE } from '../config.js';\n\nexport default class AccSupportView extends React.PureComponent {\n render() {\n return (\n
\n \n
\n
\n
\n \n {APP_NAME}\n
\n
\n \n {Tinode.getLibrary()}\n
\n
\n \n {this.props.serverVersion}\n
\n
\n \n {this.props.serverAddress}\n
\n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js';\n\nfunction _clip(str, length) {\n return str && str.substring(0, length);\n}\n\nexport default class AccountSettingsView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n this.state = {\n fullName: _clip(me.public ? me.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(me.public ? me.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(me.public ? me.public.photo : null)\n };\n }\n\n render() {\n return (\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n \n
{this.state.fullName}
\n
\n
\n  \n {this.props.myUserId}\n
\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n \n );\n }\n};\n","/* ContactsView holds all contacts-related stuff */\nimport React from 'react';\nimport { FormattedMessage, defineMessages } from 'react-intl';\n\nimport ContactList from '../widgets/contact-list.jsx';\n\nimport { updateFavicon } from '../lib/utils.js';\n\nconst messages = defineMessages({\n archived_contacts_title: {\n id: \"archived_contacts\",\n defaultMessage: \"Archived contacts ({count})\",\n description: \"Label for archived chats\"\n }\n});\n\nexport default class ContactsView extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n this.state = ContactsView.deriveStateFromProps(props);\n }\n\n static deriveStateFromProps(props) {\n const contacts = [];\n let unreadThreads = 0;\n let archivedCount = 0;\n props.chatList.map((c) => {\n const blocked = c.acs && !c.acs.isJoiner();\n // Show only blocked contacts only when props.blocked == true.\n if (blocked && props.blocked) {\n contacts.push(c);\n }\n if (blocked || props.blocked) {\n return;\n }\n\n if (c.private && c.private.arch) {\n if (props.archive) {\n contacts.push(c);\n } else {\n archivedCount ++;\n }\n } else if (!props.archive) {\n contacts.push(c);\n unreadThreads += c.unread > 0 ? 1 : 0;\n }\n });\n\n contacts.sort((a, b) => {\n return (b.touched || 0) - (a.touched || 0);\n });\n\n if (archivedCount > 0) {\n contacts.push({\n action: 'archive',\n title: messages.archived_contacts_title,\n values: {count: archivedCount}\n });\n }\n\n return {\n contactList: contacts,\n unreadThreads: unreadThreads\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.chatList != this.props.chatList ||\n prevProps.archive != this.props.archive ||\n prevProps.blocked != this.props.blocked) {\n const newState = ContactsView.deriveStateFromProps(this.props);\n this.setState(newState);\n if (newState.unreadThreads != prevState.unreadThreads) {\n updateFavicon(newState.unreadThreads);\n }\n }\n }\n\n handleAction(action_ignored) {\n this.props.onShowArchive();\n }\n\n render() {\n return (\n ¯∖_(ツ)_/¯\"\n description=\"HTML message shown in ContactList when no contacts are found\">{\n (no_contacts) => \n }\n );\n }\n};\n","// Account registration.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport CheckBox from '../widgets/checkbox.jsx';\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nimport LocalStorageUtil from '../lib/local-storage.js';\nimport { theCard } from '../lib/utils.js';\n\nimport { MAX_TITLE_LENGTH } from '../config.js';\n\nexport default class CreateAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n login: '',\n password: '',\n email: '',\n fn: '', // full/formatted name\n imageDataUrl: null,\n errorCleared: false,\n saveToken: LocalStorageUtil.getObject('keep-logged-in')\n };\n\n this.handleLoginChange = this.handleLoginChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n this.handleEmailChange = this.handleEmailChange.bind(this);\n this.handleFnChange = this.handleFnChange.bind(this);\n this.handleImageChanged = this.handleImageChanged.bind(this);\n this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleLoginChange(e) {\n this.setState({login: e.target.value});\n }\n\n handlePasswordChange(password) {\n this.setState({password: password});\n }\n\n handleEmailChange(e) {\n this.setState({email: e.target.value})\n }\n\n handleFnChange(e) {\n this.setState({fn: e.target.value});\n }\n\n handleImageChanged(img) {\n this.setState({imageDataUrl: img});\n }\n\n handleToggleSaveToken() {\n LocalStorageUtil.setObject('keep-logged-in', !this.state.saveToken);\n this.setState({saveToken: !this.state.saveToken});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.setState({errorCleared: false});\n this.props.onCreateAccount(\n this.state.login.trim(),\n this.state.password.trim(),\n theCard(this.state.fn.trim().substring(0, MAX_TITLE_LENGTH), this.state.imageDataUrl),\n {'meth': 'email', 'val': this.state.email});\n }\n\n render() {\n let submitClasses = 'primary';\n if (this.props.disabled) {\n submitClasses += ' disabled';\n }\n\n return (\n
\n
\n
\n {\n (login_prompt) => \n }\n {\n (password_prompt) => \n }\n
\n \n
\n
\n {\n (full_name_prompt) => \n }\n
\n
\n {\n (email_prompt) => \n }\n
\n
\n \n {\n (stay_logged_in) => \n }\n
\n
\n \n
\n
\n );\n }\n};\n","// InfoView: panel with topic/user info.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\nimport CheckBox from '../widgets/checkbox.jsx';\nimport ContactList from '../widgets/contact-list.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupManager from '../widgets/group-manager.jsx';\nimport MenuCancel from '../widgets/menu-cancel.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\nimport TopicCommon from '../widgets/topic-common.jsx';\nimport TopicSecurity from '../widgets/topic-security.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH, NO_ACCESS_MODE } from '../config.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { theCard } from '../lib/utils.js';\n\nconst messages = defineMessages({\n info: {\n id: 'panel_title_info',\n description: 'Title for InfoView',\n defaultMessage: 'Info'\n },\n general: {\n id: 'panel_title_general',\n description: 'Title for TopicCommon.',\n defaultMessage: 'General'\n },\n security: {\n id: 'panel_title_security',\n description: 'Title for TopicSecirity and AccSecurity.',\n defaultMessage: 'Security'\n },\n members: {\n id: 'panel_title_members',\n description: 'Title for managing group members view.',\n defaultMessage: 'Members'\n },\n crop: {\n id: 'panel_title_crop',\n description: 'Title for AvatarCropView.',\n defaultMessage: 'Drag to Adjust'\n },\n perm_want: {\n id: 'requested_permissions',\n defaultMessage: 'Requested',\n description: 'Title for permissions'\n },\n perm_given: {\n id: 'granted_permissions',\n defaultMessage: 'Granted',\n description: 'Title for permissions'\n },\n perm_auth: {\n id: 'permissions_authenticated',\n defaultMessage: 'Authenticated',\n description: 'Title for editing default authenticated permissions'\n },\n perm_anon: {\n id: 'permissions_anonymous',\n defaultMessage: 'Anonymous',\n description: 'Title for editing default anonymous permissions'\n },\n perm_user: {\n id: 'permissions_user',\n defaultMessage: 'User\\'s Permissions',\n description: 'Title for editing user\\'s permissions'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n});\n\nfunction _clip(str, length) {\n return str && str.substring(0, length);\n}\n\nclass InfoView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n topic: null,\n owner: false,\n admin: false,\n sharer: false,\n deleter: false,\n muted: false,\n address: null,\n groupTopic: undefined,\n channel: undefined,\n fullName: undefined,\n description: undefined,\n avatar: null,\n private: null,\n selectedContact: null,\n access: null,\n modeGiven: null,\n modeWant: null,\n modeGiven2: null, // P2P topic, the other user mode given\n modeWant2: null, // P2P topic, the other user mode want\n auth: null,\n anon: null,\n contactList: [],\n trustedBadges: [],\n previousMetaDesc: undefined,\n previousSubsUpdated: undefined,\n };\n\n this.resetSubs = this.resetSubs.bind(this);\n this.resetDesc = this.resetDesc.bind(this);\n this.resetTags = this.resetTags.bind(this);\n this.onMetaDesc = this.onMetaDesc.bind(this);\n this.onSubsUpdated = this.onSubsUpdated.bind(this);\n this.handleImageChanged = this.handleImageChanged.bind(this);\n this.handleMuted = this.handleMuted.bind(this);\n this.handleUnarchive = this.handleUnarchive.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleShowAddMembers = this.handleShowAddMembers.bind(this);\n this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this);\n this.handleMemberSelected = this.handleMemberSelected.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleBackNavigate = this.handleBackNavigate.bind(this);\n }\n\n // No need to separately handle component mount.\n componentDidUpdate(props) {\n const topic = this.props.tinode.getTopic(props.topic);\n if (!topic) {\n return;\n }\n\n if (this.onMetaDesc != topic.onMetaDesc) {\n this.previousMetaDesc = topic.onMetaDesc;\n topic.onMetaDesc = this.onMetaDesc;\n\n this.previousSubsUpdated = topic.onSubsUpdated;\n topic.onSubsUpdated = this.onSubsUpdated;\n }\n\n if (this.state.topic != props.topic) {\n this.setState({topic: props.topic});\n this.resetDesc(topic, props);\n this.resetSubs(topic, props);\n this.resetTags(topic);\n }\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.setState({topic: null});\n topic.onMetaDesc = this.previousMetaDesc;\n topic.onSubsUpdated = this.previousSubsUpdated;\n }\n\n resetSubs(topic, props) {\n const newState = {contactList: []};\n if (topic.getType() == 'p2p') {\n // Fetch the other party in the p2p conversation.\n // Topic may not be ready yet, so check if user is found.\n const user2 = topic.subscriber(props.topic);\n if (user2) {\n newState.modeGiven2 = user2.acs.getGiven();\n newState.modeWant2 = user2.acs.getWant();\n } else {\n newState.modeGiven2 = NO_ACCESS_MODE;\n newState.modeWant2 = NO_ACCESS_MODE;\n }\n } else {\n topic.subscribers((sub) => {\n newState.contactList.push(sub);\n }, this);\n }\n\n this.setState(newState);\n }\n\n resetDesc(topic, props) {\n const defacs = topic.getDefaultAccess() || {};\n const acs = topic.getAccessMode();\n\n const badges = [];\n if (topic.trusted) {\n for (const [key, val] of Object.entries(topic.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n }\n\n this.setState({\n owner: acs && acs.isOwner(),\n admin: acs && acs.isAdmin(),\n sharer: acs && acs.isSharer(),\n deleter: acs && acs.isDeleter(),\n muted: acs && acs.isMuted(),\n\n fullName: _clip(topic.public ? topic.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(topic.public ? topic.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n private: _clip(topic.private ? topic.private.comment : null, MAX_TITLE_LENGTH),\n archived: topic.isArchived(),\n address: topic.name,\n groupTopic: topic.isGroupType(),\n channel: topic.isChannelType() || topic.chan,\n access: acs ? acs.getMode() : undefined,\n modeGiven: acs ? acs.getGiven() : undefined,\n modeWant: acs ? acs.getWant() : undefined,\n auth: defacs.auth,\n anon: defacs.anon\n });\n }\n\n resetTags(topic) {\n if (topic.getType() != 'grp') {\n return;\n }\n\n const acs = topic.getAccessMode();\n if (acs && acs.isOwner()) {\n // Requesting tags: owner is editing the topic.\n topic.getMeta(topic.startMetaQuery().withTags().build());\n }\n }\n\n onMetaDesc(desc) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetDesc(topic, this.props);\n\n if (this.previousMetaDesc && this.previousMetaDesc != this.onMetaDesc) {\n this.previousMetaDesc(desc);\n }\n }\n\n onSubsUpdated(subs) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetSubs(topic, this.props);\n\n if (this.previousSubsUpdated && this.previousSubsUpdated != this.onSubsUpdated) {\n this.previousSubsUpdated(subs);\n }\n }\n\n handleImageChanged(img) {\n this.setState({avatar: img});\n this.props.onTopicDescUpdate(this.props.topic, theCard(null, img || Tinode.DEL_CHAR), null);\n }\n\n handleMuted(ignored, checked) {\n this.setState({muted: checked});\n this.props.onChangePermissions(this.props.topic, checked ? '-P' : '+P');\n }\n\n handleUnarchive(ignored, ignored2) {\n this.props.onTopicUnArchive(this.props.topic);\n }\n\n handlePermissionsChanged(which, perm) {\n switch (which) {\n case 'auth':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {auth: perm});\n break;\n case 'anon':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {anon: perm});\n break;\n case 'mode':\n case 'want':\n this.props.onChangePermissions(this.props.topic, perm);\n break;\n case 'given':\n this.props.onChangePermissions(this.props.topic, perm, this.props.topic);\n break;\n case 'user':\n this.props.onChangePermissions(this.props.topic, perm, this.state.userPermissionsEdited);\n break;\n }\n\n this.handleBackNavigate();\n }\n\n handleLaunchPermissionsEditor(which, uid) {\n const {formatMessage} = this.props.intl;\n let toEdit, toCompare, toSkip, titleEdit, titleCompare, userTitle, userAvatar;\n switch (which) {\n case 'mode':\n toEdit = this.state.access;\n break;\n case 'want':\n toEdit = this.state.modeWant;\n toCompare = this.state.modeGiven;\n if (this.state.owner) {\n // Don't allow owner to unset 'O' permission. All other permissions are OK.\n toSkip = 'O';\n } else {\n // Allow accepting any of 'ASDO' permissions but don't allow asking for them.\n toSkip = Tinode.AccessMode.encode(Tinode.AccessMode.diff('ASDO', this.state.modeGiven));\n if (this.state.channel) {\n // Channels are read-only.\n toSkip += 'W';\n }\n }\n titleEdit = formatMessage(messages.perm_want);\n titleCompare = formatMessage(messages.perm_given);\n break;\n case 'given':\n toEdit = this.state.modeGiven2;\n toCompare = this.state.modeWant2;\n toSkip = this.state.groupTopic ? (this.state.owner ? '' : 'O') : 'ASDO';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n break;\n case 'auth':\n toEdit = this.state.auth;\n toSkip = 'O';\n break;\n case 'anon':\n toEdit = this.state.anon;\n toSkip = 'O';\n break;\n case 'user': {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(uid);\n if (!user || !user.acs) {\n return;\n }\n toEdit = user.acs.getGiven();\n toCompare = user.acs.getWant();\n toSkip = this.state.owner ? '' : 'O';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n if (user.public) {\n userTitle = user.public.fn;\n userAvatar = user.public.photo;\n }\n break;\n }\n default:\n console.error(\"Unknown permission editing mode '\" + which + \"'\");\n return;\n }\n this.setState({\n userPermissionsEdited: uid,\n userPermissionsTitle: userTitle,\n userPermissionsAvatar: userAvatar,\n editedPermissions: toEdit,\n immutablePermissions: toCompare,\n editedPermissionsTitle: titleEdit,\n immutablePermissionsTitle: titleCompare,\n editedPermissionsSkipped: toSkip,\n });\n this.props.onNavigate(`perm/${which}`);\n }\n\n handleShowAddMembers(e) {\n e.preventDefault();\n this.props.onInitFind();\n this.props.onNavigate('members');\n }\n\n handleMemberUpdateRequest(members, added, removed) {\n this.props.onMemberUpdateRequest(this.props.topic, added, removed);\n this.props.onNavigate('info');\n }\n\n handleMemberSelected(uid) {\n this.setState({selectedContact: uid});\n }\n\n handleBackNavigate() {\n const args = (this.props.panel || 'info').split('/');\n if (args[0] == 'info') {\n this.props.onNavigate(null);\n } else if (args[0] == 'perm') {\n if (args[1] == 'user') {\n this.props.onNavigate('info');\n } else {\n this.props.onNavigate('security');\n }\n } else {\n this.props.onNavigate('info');\n }\n }\n\n handleContextMenu(params) {\n const {formatMessage} = this.props.intl;\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(params.topicName);\n if (!user || !user.acs) {\n return;\n }\n\n const isMe = this.props.tinode.isMe(params.topicName);\n const menuItems = [\n {title: formatMessage(messages.edit_permissions), handler: () => {\n this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName);\n }}\n ];\n if (!isMe) {\n menuItems.push('member_delete');\n }\n menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');\n if (!isMe) {\n menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock');\n }\n this.props.showContextMenu({\n topicName: this.props.topic,\n x: params.x,\n y: params.y,\n user: params.topicName}, menuItems);\n }\n\n render() {\n const args = (this.props.panel || 'info').split('/');\n const view = args[0];\n args.shift();\n\n const {formatMessage} = this.props.intl;\n const panelTitle = formatMessage((view == 'perm' ? messages['perm_' + args[0]] : messages[view])\n || messages['info']);\n\n return (\n
\n
\n
{panelTitle}
\n
\n \n
\n
\n {this.props.displayMobile ?\n : null}\n {view == 'members' ?\n \n :\n view == 'perm' && args.length > 0 ?\n this.handlePermissionsChanged(args[0], mode)}\n onCancel={this.handleBackNavigate} />\n :\n view == 'general' ?\n \n :\n view == 'security' ?\n \n :\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n
\n
{this.state.fullName}\n {this.state.channel ? \"channel\" : null}
\n
\n {this.state.private ?\n
\n
\n
{this.state.private}
\n
\n : null\n }\n
\n  \n {this.state.address}\n
\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n
\n
\n \n \n
\n {this.state.archived ?\n
\n \n \n
\n :\n null\n }\n
\n \n {this.state.groupTopic && this.state.sharer ?\n <>\n
\n
\n \n
\n \n {\n (no_members) => \n }\n \n :\n null\n }\n
\n }\n
\n );\n }\n};\n\nexport default injectIntl(InfoView);\n","// Login form.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nimport LocalStorageUtil from '../lib/local-storage.js';\n\nexport default class LoginView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n login: props.login,\n password: '',\n hostName: props.serverAddress,\n saveToken: props.persist\n };\n this.handleLoginChange = this.handleLoginChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleLoginChange(e) {\n this.setState({login: e.target.value});\n }\n\n handlePasswordChange(e) {\n this.setState({password: e.target.value});\n }\n\n handleToggleSaveToken() {\n this.props.onPersistenceChange(!this.state.saveToken);\n this.setState({saveToken: !this.state.saveToken});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.props.onLogin(this.state.login.trim(), this.state.password.trim());\n }\n\n render() {\n let submitClasses = 'primary';\n if (this.props.disabled) {\n submitClasses += ' disabled';\n }\n\n return (\n
\n \n {\n (login_prompt) => \n }\n \n \n {\n (password_prompt) => \n }\n \n
\n \n \n \n \n \n
\n
\n \n
\n
\n );\n }\n};\n/* END Login */\n","/* This is just a static page to display when no conversation is selected. */\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME } from '../config.js';\n\nexport default class LogoView extends React.PureComponent {\n render() {\n const version = APP_NAME + ' (' + Tinode.getLibrary() + ')';\n return (\n
\n
\n \n \"logo\"\n

Tinode Web

\n
\n

{version}

\n

{this.props.serverVersion} ({this.props.serverAddress})

\n
\n
\n );\n }\n};\n","// Panel with a chat.\n\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport ChatMessage from '../widgets/chat-message.jsx';\nimport ContactBadges from '../widgets/contact-badges.jsx';\nimport DocPreview from '../widgets/doc-preview.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupSubs from '../widgets/group-subs.jsx';\nimport ImagePreview from '../widgets/image-preview.jsx';\nimport Invitation from '../widgets/invitation.jsx';\nimport LetterTile from '../widgets/letter-tile.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport LogoView from './logo-view.jsx';\nimport MetaMessage from '../widgets/meta-message.jsx';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { DEFAULT_P2P_ACCESS_MODE, IMAGE_PREVIEW_DIM, KEYPRESS_DELAY,\n MESSAGES_PAGE, MAX_EXTERN_ATTACHMENT_SIZE, MAX_IMAGE_DIM, MAX_INBAND_ATTACHMENT_SIZE,\n READ_DELAY, QUOTED_REPLY_LENGTH } from '../config.js';\nimport { blobToBase64, fileToBase64, imageScaled, makeImageUrl } from '../lib/blob-helpers.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { bytesToHumanSize, shortDateFormat } from '../lib/strformat.js';\n\n// Run timer with this frequency (ms) for checking notification queue.\nconst NOTIFICATION_EXEC_INTERVAL = 300;\n// Scroll distance before [go to latest message] button is shown.\nconst SHOW_GO_TO_LAST_DIST = 100;\n\nconst messages = defineMessages({\n online_now: {\n id: 'online_now',\n defaultMessage: 'online now',\n description: 'Indicator that the user or topic is currently online',\n },\n last_seen: {\n id: 'last_seen_timestamp',\n defaultMessage: 'Last seen',\n description: 'Label for the timestamp of when the user or topic was last online'\n },\n not_found: {\n id: 'title_not_found',\n defaultMessage: 'Not found',\n description: 'Title shown when topic is not found'\n },\n channel: {\n id: 'channel',\n defaultMessage: 'channel',\n description: 'Subtitle shown for channels in MessagesView instead of last seen'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n invalid_content: {\n id: 'invalid_content',\n defaultMessage: 'invalid content',\n description: 'Shown when the message is unreadable'\n },\n});\n\n// Checks if the access permissions are granted but not yet accepted.\nfunction isUnconfirmed(acs) {\n if (acs) {\n const ex = acs.getExcessive() || '';\n return acs.isJoiner('given') && (ex.includes('R') || ex.includes('W'));\n }\n return false;\n}\n\nfunction isPeerRestricted(acs) {\n if (acs) {\n const ms = acs.getMissing() || '';\n return acs.isJoiner('want') && (ms.includes('R') || ms.includes('W'));\n }\n return false;\n}\n\nclass MessagesView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = MessagesView.getDerivedStateFromProps(props, {});\n\n this.leave = this.leave.bind(this);\n this.sendMessage = this.sendMessage.bind(this);\n this.retrySend = this.retrySend.bind(this);\n this.sendImageAttachment = this.sendImageAttachment.bind(this);\n this.sendFileAttachment = this.sendFileAttachment.bind(this);\n this.sendAudioAttachment = this.sendAudioAttachment.bind(this);\n this.sendKeyPress = this.sendKeyPress.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.handleScrollReference = this.handleScrollReference.bind(this);\n this.handleScrollEvent = this.handleScrollEvent.bind(this);\n this.handleDescChange = this.handleDescChange.bind(this);\n this.handleSubsUpdated = this.handleSubsUpdated.bind(this);\n this.handleMessageUpdate = this.handleMessageUpdate.bind(this);\n this.handleAllMessagesReceived = this.handleAllMessagesReceived.bind(this);\n this.handleInfoReceipt = this.handleInfoReceipt.bind(this);\n this.handleImagePostview = this.handleImagePostview.bind(this);\n this.handleClosePreview = this.handleClosePreview.bind(this);\n this.handleFormResponse = this.handleFormResponse.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleShowMessageContextMenu = this.handleShowMessageContextMenu.bind(this);\n this.handleNewChatAcceptance = this.handleNewChatAcceptance.bind(this);\n this.handleEnablePeer = this.handleEnablePeer.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.postReadNotification = this.postReadNotification.bind(this);\n this.clearNotificationQueue = this.clearNotificationQueue.bind(this);\n this.goToLatestMessage = this.goToLatestMessage.bind(this);\n\n this.handlePickReply = this.handlePickReply.bind(this);\n this.handleCancelReply = this.handleCancelReply.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n\n this.chatMessageRefs = {};\n this.getOrCreateMessageRef = this.getOrCreateMessageRef.bind(this);\n\n this.readNotificationQueue = [];\n this.readNotificationTimer = null;\n }\n\n getOrCreateMessageRef(seqId) {\n if (this.chatMessageRefs.hasOwnProperty(seqId)) {\n return this.chatMessageRefs[seqId];\n }\n const ref = React.createRef();\n this.chatMessageRefs[seqId] = ref;\n return ref;\n }\n\n componentDidMount() {\n if (this.messagesScroller) {\n this.messagesScroller.addEventListener('scroll', this.handleScrollEvent);\n }\n }\n\n componentWillUnmount() {\n if (this.messagesScroller) {\n this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent);\n }\n\n // Flush all notifications.\n this.clearNotificationQueue();\n }\n\n // Scroll last message into view on component update e.g. on message received\n // or vertical shrinking.\n componentDidUpdate(prevProps, prevState) {\n if (this.messagesScroller &&\n (prevState.topic != this.state.topic || prevState.messageCount != this.state.messageCount)) {\n // New message.\n if (this.state.scrollPosition < SHOW_GO_TO_LAST_DIST) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight -\n this.state.scrollPosition -\n this.messagesScroller.offsetHeight;\n }\n }\n\n const topic = this.props.tinode ? this.props.tinode.getTopic(this.state.topic) : undefined;\n if (this.state.topic != prevState.topic) {\n if (prevState.topic && !Tinode.isNewGroupTopicName(prevState.topic)) {\n this.leave(prevState.topic);\n }\n\n if (topic) {\n topic.onData = this.handleMessageUpdate;\n topic.onAllMessagesReceived = this.handleAllMessagesReceived;\n topic.onInfo = this.handleInfoReceipt;\n topic.onMetaDesc = this.handleDescChange;\n topic.onSubsUpdated = this.handleSubsUpdated;\n topic.onPres = this.handleSubsUpdated;\n }\n }\n\n if (!this.props.applicationVisible) {\n // If application is not visible, flush all unsent 'read' notifications.\n this.clearNotificationQueue();\n } else {\n // Otherwise assume there are unread messages.\n this.postReadNotification(0);\n }\n\n if (topic && ((this.state.topic != prevState.topic) || !prevProps.ready)) {\n // Don't immediately subscribe to a new p2p topic, wait for the first message.\n if (topic._new && topic.isP2PType()) {\n topic.getMeta(topic.startMetaQuery().withDesc().build());\n } else {\n this.subscribe(topic);\n }\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n let nextState = {};\n if (!nextProps.topic) {\n // Default state: no topic.\n nextState = {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n topic: null,\n title: '',\n avatar: null,\n isVerified: false,\n isStaff: false,\n isDangerous: false,\n deleted: false,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n peerMessagingDisabled: false,\n channel: false,\n reply: null,\n showGoToLastButton: false\n };\n } else if (nextProps.topic != prevState.topic) {\n const topic = nextProps.tinode.getTopic(nextProps.topic);\n\n let reply = null;\n if (nextProps.forwardMessage) {\n // We are forwarding a message. Show preview.\n const preview = nextProps.forwardMessage.preview;\n reply = {\n content: preview,\n seq: null\n };\n }\n\n nextState = {\n topic: nextProps.topic,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n reply: reply,\n showGoToLastButton: false,\n deleted: topic._deleted\n };\n\n if (topic) {\n // Topic exists.\n const subs = [];\n\n if (nextProps.connected) {\n topic.subscribers((sub) => {\n if (sub.online && sub.user != nextProps.myUserId) {\n subs.push(sub);\n }\n });\n }\n\n Object.assign(nextState, {\n onlineSubs: subs\n });\n\n if (topic.public) {\n Object.assign(nextState, {\n title: topic.public.fn,\n avatar: makeImageUrl(topic.public.photo)\n });\n } else {\n Object.assign(nextState, {\n title: '',\n avatar: null\n });\n }\n\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(nextState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (prevState.peerMessagingDisabled) {\n Object.assign(nextState, {\n peerMessagingDisabled: false\n });\n }\n Object.assign(nextState, {\n messageCount: topic.messageCount(),\n latestClearId: topic.maxClearId(),\n channel: topic.isChannelType()\n });\n } else {\n // Invalid topic.\n Object.assign(nextState, {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n title: '',\n avatar: null,\n peerMessagingDisabled: false,\n channel: false\n });\n }\n }\n\n if (nextProps.acs) {\n if (nextProps.acs.isWriter() != prevState.isWriter) {\n nextState.isWriter = !prevState.isWriter;\n }\n if (nextProps.acs.isReader() != prevState.isReader) {\n nextState.isReader = !prevState.isReader;\n }\n if (!nextProps.acs.isReader('given') != prevState.readingBlocked) {\n nextState.readingBlocked = !prevState.readingBlocked;\n }\n if (nextProps.acs.isSharer() != prevState.isSharer) {\n nextState.isSharer = !prevState.isSharer;\n }\n } else {\n if (prevState.isWriter) {\n nextState.isWriter = false;\n }\n if (prevState.isReader) {\n nextState.isReader = false;\n }\n if (!prevState.readingBlocked) {\n prevState.readingBlocked = true;\n }\n if (prevState.isSharer) {\n nextState.isSharer = false;\n }\n }\n\n if (isUnconfirmed(nextProps.acs) == !prevState.unconformed) {\n nextState.unconfirmed = !prevState.unconformed;\n }\n\n // Clear subscribers online when there is no connection.\n if (!nextProps.connected && prevState.onlineSubs && prevState.onlineSubs.length > 0) {\n nextState.onlineSubs = [];\n }\n\n return nextState;\n }\n\n subscribe(topic) {\n if (topic.isSubscribed() || !this.props.ready) {\n return;\n }\n\n // Is this a new topic?\n const newTopic = (this.props.newTopicParams && this.props.newTopicParams._topicName == this.props.topic);\n\n // Don't request the tags. They are useless unless the user\n // is the owner and is editing the topic.\n let getQuery = topic.startMetaQuery().withLaterDesc().withLaterSub();\n if (this.state.isReader || newTopic) {\n // Reading is either permitted or we don't know because it's a new topic. Ask for messages.\n getQuery = getQuery.withLaterData(MESSAGES_PAGE);\n if (this.state.isReader) {\n getQuery = getQuery.withLaterDel();\n }\n // And show \"loading\" spinner.\n this.setState({ fetchingMessages: true });\n }\n\n const setQuery = newTopic ? this.props.newTopicParams : undefined;\n topic.subscribe(getQuery.build(), setQuery)\n .then((ctrl) => {\n if (ctrl.code == 303) {\n // Redirect to another topic requested.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', ctrl.params.topic));\n return;\n }\n if (this.state.topic != ctrl.topic) {\n this.setState({topic: ctrl.topic});\n }\n this.props.onNewTopicCreated(this.props.topic, ctrl.topic);\n // If there are unsent messages, try sending them now.\n topic.queuedMessages((pub) => {\n if (pub._sending) {\n return;\n }\n if (topic.isSubscribed()) {\n this.retrySend(pub);\n }\n });\n })\n .catch((err) => {\n console.error(\"Failed subscription to\", this.state.topic);\n this.props.onError(err.message, 'err');\n const blankState = MessagesView.getDerivedStateFromProps({}, {});\n blankState.title = this.props.intl.formatMessage(messages.not_found);\n this.setState(blankState);\n });\n }\n\n leave(oldTopicName) {\n if (!oldTopicName || !this.props.tinode.isTopicCached(oldTopicName)) {\n return;\n }\n const oldTopic = this.props.tinode.getTopic(oldTopicName);\n if (oldTopic && oldTopic.isSubscribed()) {\n oldTopic.leave(false)\n .catch(() => { /* do nothing here */ })\n .finally(() => {\n // We don't care if the request succeeded or failed.\n // The topic is dead regardless.\n this.setState({fetchingMessages: false});\n oldTopic.onData = undefined;\n oldTopic.onAllMessagesReceived = undefined;\n oldTopic.onInfo = undefined;\n oldTopic.onMetaDesc = undefined;\n oldTopic.onSubsUpdated = undefined;\n oldTopic.onPres = undefined;\n });\n }\n }\n\n // Don't use React.createRef as the ref.current is not available in componentDidMount in this component.\n handleScrollReference(node) {\n if (node) {\n node.addEventListener('scroll', this.handleScrollEvent);\n this.messagesScroller = node;\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;\n }\n }\n\n // Get older messages and show/hide [go to latest message] button.\n handleScrollEvent(event) {\n const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;\n this.setState({\n scrollPosition: pos,\n showGoToLastButton: pos > SHOW_GO_TO_LAST_DIST,\n });\n\n if (this.state.fetchingMessages) {\n return;\n }\n\n if (event.target.scrollTop <= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic && topic.isSubscribed() && topic.msgHasMoreMessages()) {\n this.setState({fetchingMessages: true}, () => {\n topic.getMessagesPage(MESSAGES_PAGE)\n .catch((err) => this.props.onError(err.message, 'err'))\n .finally(() => this.setState({fetchingMessages: false}));\n });\n }\n }\n }\n\n goToLatestMessage() {\n this.setState({scrollPosition: 0});\n if (this.messagesScroller) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight;\n }\n }\n\n handleDescChange(desc) {\n if (desc.public) {\n this.setState({\n title: desc.public.fn,\n avatar: makeImageUrl(desc.public.photo)\n });\n } else {\n this.setState({\n title: '',\n avatar: null\n });\n }\n\n if (desc.acs) {\n this.setState({\n isWriter: desc.acs.isWriter(),\n isReader: desc.acs.isReader(),\n readingBlocked: !desc.acs.isReader('given'),\n unconfirmed: isUnconfirmed(desc.acs),\n });\n }\n }\n\n postReadNotification(seq) {\n // Ignore notifications if the app is invisible.\n if (!this.props.applicationVisible) {\n return;\n }\n\n // Set up the timer if it's not running already.\n if (!this.readNotificationTimer) {\n this.readNotificationTimer = setInterval(() => {\n if (this.readNotificationQueue.length == 0) {\n // Shut down the timer if the queue is empty.\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n return;\n }\n\n let seq = -1;\n while (this.readNotificationQueue.length > 0) {\n const n = this.readNotificationQueue[0];\n if (n.topicName != this.state.topic) {\n // Topic has changed. Drop the notification.\n this.readNotificationQueue.shift();\n continue;\n }\n\n const now = new Date();\n if (n.sendAt <= now) {\n // Remove expired notification from queue.\n this.readNotificationQueue.shift();\n seq = Math.max(seq, n.seq);\n } else {\n break;\n }\n }\n\n // Send only one notification for the whole batch of messages.\n if (seq >= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic) {\n topic.noteRead(seq);\n }\n }\n }, NOTIFICATION_EXEC_INTERVAL);\n }\n\n const now = new Date();\n this.readNotificationQueue.push({\n topicName: this.state.topic,\n seq: seq,\n sendAt: now.setMilliseconds(now.getMilliseconds() + READ_DELAY)\n });\n }\n\n // Clear notification queue and timer.\n clearNotificationQueue() {\n this.readNotificationQueue = [];\n if (this.readNotificationTimer) {\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n }\n }\n\n handleSubsUpdated() {\n if (this.state.topic) {\n const subs = [];\n const topic = this.props.tinode.getTopic(this.state.topic);\n topic.subscribers((sub) => {\n if (sub.online && sub.user != this.props.myUserId) {\n subs.push(sub);\n }\n });\n const newState = {onlineSubs: subs};\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(newState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (this.state.peerMessagingDisabled) {\n Object.assign(newState, {\n peerMessagingDisabled: false\n });\n }\n this.setState(newState);\n }\n }\n\n // The 'msg' could be false-ish if some message ranges were deleted.\n handleMessageUpdate(msg) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (!msg) {\n // msg could be null if one or more messages were deleted.\n // Updating state to force redraw.\n this.setState({latestClearId: topic.maxClearId()});\n return;\n }\n\n clearTimeout(this.keyPressTimer)\n this.setState({messageCount: topic.messageCount(), typingIndicator: false});\n\n // Scroll to the bottom if the message is added to the end of the message list.\n // TODO: This should be replaced by showing a \"scroll to bottom\" button.\n if (topic.isNewMessage(msg.seq)) {\n if (this.state.scrollPosition > SHOW_GO_TO_LAST_DIST) {\n this.setState({showGoToLastButton: true});\n } else {\n this.setState({scrollPosition: 0});\n }\n }\n\n // Aknowledge messages except own messages. They are\n // automatically assumed to be read and recived.\n const status = topic.msgStatus(msg, true);\n if (status >= Tinode.MESSAGE_STATUS_SENT && msg.from != this.props.myUserId) {\n this.postReadNotification(msg.seq);\n }\n // This will send \"received\" notifications right away.\n this.props.onData(msg);\n }\n\n handleAllMessagesReceived(count) {\n this.setState({fetchingMessages: false});\n if (count > 0) {\n // 0 means \"latest\".\n this.postReadNotification(0);\n }\n }\n\n handleInfoReceipt(info) {\n switch (info.what) {\n case 'kp': {\n clearTimeout(this.keyPressTimer);\n this.keyPressTimer = setTimeout(() => {\n this.setState({typingIndicator: false});\n }, KEYPRESS_DELAY + 1000);\n if (!this.state.typingIndicator) {\n this.setState({typingIndicator: true});\n }\n break;\n }\n case 'read':\n case 'recv':\n // Redraw due to changed recv/read status.\n this.forceUpdate();\n break;\n default:\n console.info(\"Other change in topic: \", info.what);\n }\n }\n\n handleImagePostview(content) {\n this.setState({ imagePostview: content });\n }\n\n handleClosePreview() {\n if (this.state.imagePreview && this.state.imagePreview.url) {\n URL.revokeObjectURL(this.state.imagePreview.url);\n }\n this.setState({ imagePostview: null, imagePreview: null, docPreview: null });\n }\n\n handleFormResponse(action, text, data) {\n if (action == 'pub') {\n this.sendMessage(Drafty.attachJSON(Drafty.parse(text), data));\n } else if (action == 'url') {\n const url = new URL(data.ref);\n const params = url.searchParams;\n for (let key in data.resp) {\n if (data.resp.hasOwnProperty(key)) {\n params.set(key, data.resp[key]);\n }\n }\n ['name', 'seq'].map((key) => {\n if (data[key]) {\n params.set(key, data[key]);\n }\n });\n params.set('uid', this.props.myUserId);\n params.set('topic', this.state.topic);\n url.search = params;\n window.open(url, '_blank');\n } else {\n console.info(\"Unknown action in form\", action);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.state.topic, y: e.pageY, x: e.pageX });\n }\n\n handleShowMessageContextMenu(params, messageSpecificMenuItems) {\n if (params.userFrom == 'chan') {\n params.userFrom = this.state.topic;\n params.userName = this.state.title;\n }\n params.topicName = this.state.topic;\n const menuItems = messageSpecificMenuItems || [];\n const topic = this.props.tinode.getTopic(params.topicName);\n if (topic) {\n if (!topic.isChannelType()) {\n menuItems.push('message_delete');\n }\n const acs = topic.getAccessMode();\n if (acs && acs.isDeleter()) {\n menuItems.push('message_delete_hard');\n }\n }\n this.props.showContextMenu(params, menuItems);\n }\n\n handleNewChatAcceptance(action) {\n this.props.onNewChat(this.state.topic, action);\n }\n\n handleEnablePeer(e) {\n e.preventDefault();\n this.props.onChangePermissions(this.state.topic, DEFAULT_P2P_ACCESS_MODE, this.state.topic);\n }\n\n sendKeyPress() {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic.isSubscribed()) {\n topic.noteKeyPress();\n }\n }\n\n // sendMessage sends the message with an optional subscription to topic first.\n sendMessage(msg, uploadCompletionPromise, uploader) {\n let head;\n if (this.props.forwardMessage) {\n // We are forwarding a message.\n msg = this.props.forwardMessage.msg;\n head = this.props.forwardMessage.head;\n this.handleCancelReply();\n } else if (this.state.reply && this.state.reply.content) {\n // We are replying to a message in this topic.\n head = {reply: '' + this.state.reply.seq};\n // Turn it into Drafty so we can make a quoted Drafty object later.\n if (typeof msg == 'string') {\n msg = Drafty.parse(msg);\n }\n msg = Drafty.append(Drafty.sanitizeEntities(this.state.reply.content), msg);\n this.handleCancelReply();\n }\n this.props.sendMessage(msg, uploadCompletionPromise, uploader, head);\n }\n\n // Retry sending a message.\n retrySend(pub) {\n this.props.sendMessage(pub.content, undefined, undefined, pub.head);\n }\n\n // Send attachment as Drafty message:\n // - if file is too large, upload it and send a s link.\n // - if file is small enough, just send it in-band.\n sendFileAttachment(file) {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (file.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(file);\n const msg = Drafty.attachFile(null, {\n mime: file.type,\n filename: file.name,\n size: file.size,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n fileToBase64(file)\n .then(b64 => this.sendMessage(Drafty.attachFile(null, {mime: b64.mime, data: b64.bits, filename: b64.name})))\n .catch(err => this.props.onError(err));\n }\n }\n\n // handleAttachFile method is called when [Attach file] button is clicked: launch attachment preview.\n handleAttachFile(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n if (file.size > maxExternAttachmentSize) {\n // Too large.\n this.props.onError(this.props.intl.formatMessage(messages.file_attachment_too_large,\n {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err');\n } else {\n this.setState({\n docPreview: {\n file: file,\n name: file.name,\n size: file.size,\n type: file.type\n }\n });\n }\n }\n\n // sendImageAttachment sends the image bits inband as Drafty message.\n sendImageAttachment(caption, blob) {\n const mime = this.state.imagePreview.mime;\n const width = this.state.imagePreview.width;\n const height = this.state.imagePreview.height;\n const fname = this.state.imagePreview.name;\n\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n\n // Make small preview to show while uploading.\n imageScaled(blob, IMAGE_PREVIEW_DIM, IMAGE_PREVIEW_DIM, -1, false)\n // Convert tiny image into base64 for serialization and previewing.\n .then(scaled => blobToBase64(scaled.blob))\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: mime,\n _tempPreview: b64.bits, // This preview will not be serialized.\n width: width,\n height: height,\n filename: fname,\n size: blob.size,\n urlPromise: uploadCompletionPromise\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n }).catch((err) => {\n this.props.onError(err, 'err');\n });\n return;\n }\n\n // Upload the image if it's too big to be send inband.\n blobToBase64(blob)\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: b64.mime,\n preview: b64.bits, // Serializable preview\n width: width,\n height: height,\n filename: fname,\n size: blob.size\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n this.sendMessage(msg);\n });\n }\n\n // handleAttachImage method is called when [Attach image] button is clicked: launch image preview.\n handleAttachImage(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n // Get image dimensions and size, optionally scale it down.\n imageScaled(file, MAX_IMAGE_DIM, MAX_IMAGE_DIM, maxExternAttachmentSize, false)\n .then(scaled => {\n this.setState({imagePreview: {\n url: URL.createObjectURL(scaled.blob),\n blob: scaled.blob,\n name: scaled.name,\n width: scaled.width,\n height: scaled.height,\n size: scaled.blob.size,\n mime: scaled.mime\n }});\n }).catch(err => {\n this.props.onError(err, 'err');\n });\n }\n\n // sendAudioAttachment sends audio bits inband as Drafty message (no preview).\n sendAudioAttachment(url, preview, duration) {\n fetch(url)\n .then(result => result.blob())\n .then(blob => {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = this.props.tinode.getServerLimit('maxMessageSize', MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024;\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n const msg = Drafty.appendAudio(null, {\n mime: blob.type,\n size: blob.size,\n duration: duration,\n preview: preview,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n blobToBase64(blob)\n .then(b64 => {\n this.sendMessage(Drafty.appendAudio(null, {\n mime: b64.mime,\n size: blob.size,\n data: b64.bits,\n duration: duration,\n preview: preview,\n }))\n })\n }\n })\n .catch(err => {this.props.onError(err)});;\n }\n\n handleCancelUpload(seq, uploader) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const found = topic.findMessage(seq);\n if (found) {\n found._cancelled = true;\n }\n uploader.cancel();\n }\n\n // seq: seq ID of the source message\n // context: message content.\n // forwarded: true if the source message is also a forwarded message.\n // senderId: UID of the sender of the source message.\n // senderName: full name of the sender of the original message.\n handlePickReply(seq, content, senderId, senderName) {\n this.setState({reply: null});\n\n if (!seq || !content) {\n return;\n }\n\n content = typeof content == 'string' ? Drafty.init(content) : content;\n if (Drafty.isValid(content)) {\n content = Drafty.replyContent(content, QUOTED_REPLY_LENGTH);\n } else {\n // /!\\ invalid content.\n content = Drafty.append(Drafty.init('\\u26A0 '),\n Drafty.wrapInto(this.props.intl.formatMessage(messages.invalid_content), 'EM'));\n }\n\n this.setState({\n reply: {\n content: Drafty.quote(senderName, senderId, content),\n seq: seq\n }\n });\n this.props.onCancelForwardMessage();\n }\n\n handleCancelReply() {\n this.setState({reply: null});\n this.props.onCancelForwardMessage();\n }\n\n handleQuoteClick(replyToSeq) {\n const ref = this.getOrCreateMessageRef(replyToSeq);\n if (ref && ref.current) {\n ref.current.scrollIntoView({block: \"center\", behavior: \"smooth\"});\n ref.current.classList.add('flash');\n setTimeout(() => { ref.current.classList.remove('flash') } , 1000);\n } else {\n console.error(\"Unresolved message ref\", replyToSeq);\n }\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n\n let component;\n if (this.props.hideSelf) {\n component = null;\n } else if (!this.state.topic) {\n component = (\n \n );\n } else {\n let component2;\n if (this.state.imagePreview) {\n // Preview image before sending.\n component2 = (\n \n );\n } else if (this.state.imagePostview) {\n // Expand received image.\n component2 = (\n \n );\n } else if (this.state.docPreview) {\n // Preview attachment before sending.\n component2 = (\n \n );\n } else {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const isChannel = topic.isChannelType();\n const groupTopic = topic.isGroupType() && !isChannel;\n const icon_badges = [];\n if (topic.trusted) {\n if (topic.trusted.verified) {\n icon_badges.push({icon: 'verified', color: 'badge-inv'});\n }\n if (topic.trusted.staff) {\n icon_badges.push({icon: 'staff', color: 'badge-inv'});\n }\n if (topic.trusted.danger) {\n icon_badges.push({icon: 'dangerous', color: 'badge-inv'});\n }\n }\n\n const messageNodes = [];\n let previousFrom = null;\n let prevDate = null;\n let chatBoxClass = null;\n const dateFmt = new Intl.DateTimeFormat(this.props.intl.locale);\n topic.messages((msg, prev, next, i) => {\n let nextFrom = next ? (next.from || 'chan') : null;\n\n let sequence = 'single';\n let thisFrom = msg.from || 'chan';\n if (thisFrom == previousFrom) {\n if (thisFrom == nextFrom) {\n sequence = 'middle';\n } else {\n sequence = 'last';\n }\n } else if (thisFrom == nextFrom) {\n sequence = 'first';\n }\n previousFrom = thisFrom;\n\n const isReply = !(thisFrom == this.props.myUserId);\n const deliveryStatus = topic.msgStatus(msg, true);\n\n let userFrom = thisFrom, userName, userAvatar;\n const user = topic.userDesc(thisFrom);\n if (user && user.public) {\n userName = user.public.fn;\n userAvatar = makeImageUrl(user.public.photo);\n }\n chatBoxClass = groupTopic ? 'chat-box group' : 'chat-box';\n\n // Ref for this chat message.\n const ref = this.getOrCreateMessageRef(msg.seq);\n let replyToSeq = msg.head ? parseInt(msg.head.reply) : null;\n if (!replyToSeq || isNaN(replyToSeq)) {\n replyToSeq = null;\n }\n\n if (msg.hi) {\n // Deleted message.\n messageNodes.push(\n \n );\n } else {\n const thisDate = new Date(msg.ts);\n // This message was sent on a different date than the previous.\n if (!prevDate || prevDate.toDateString() != thisDate.toDateString()) {\n messageNodes.push(\n \n );\n prevDate = thisDate;\n }\n messageNodes.push(\n \n );\n }\n });\n\n let lastSeen = null;\n if (isChannel) {\n lastSeen = formatMessage(messages.channel);\n } else {\n const cont = this.props.tinode.getMeTopic().getContact(this.state.topic);\n if (cont && Tinode.isP2PTopicName(cont.topic)) {\n if (cont.online) {\n lastSeen = formatMessage(messages.online_now);\n } else if (cont.seen) {\n lastSeen = formatMessage(messages.last_seen) + \": \" +\n shortDateFormat(cont.seen.when, this.props.intl.locale);\n // TODO: also handle user agent in c.seen.ua\n }\n }\n }\n const avatar = this.state.avatar || true;\n const online = this.state.deleted ? null :\n this.props.online ? 'online' + (this.state.typingIndicator ? ' typing' : '') : 'offline';\n\n const titleClass = 'panel-title' + (this.state.deleted ? ' deleted' : '');\n\n component2 = (\n <>\n
\n {this.props.displayMobile ?\n {e.preventDefault(); this.props.onHideMessagesView();}}>\n arrow_back\n \n :\n null}\n
\n \n {!isChannel ? : null}\n
\n
\n
{\n this.state.title ||\n \n }
\n
{lastSeen}
\n
\n {groupTopic ?\n :\n
\n }\n \n
\n {this.props.displayMobile ?\n \n : null}\n \n
\n \n
\n
    \n {messageNodes}\n
\n
\n {!this.state.isReader ?\n
\n {this.state.readingBlocked ?\n
\n \n
\n : null }\n
\n : null }\n
\n {this.state.peerMessagingDisabled && !this.state.unconfirmed ?\n
\n block .\n
: null}\n {this.state.unconfirmed ?\n \n :\n }\n \n );\n }\n\n component =
{component2}
\n }\n return component;\n }\n};\n\nexport default injectIntl(MessagesView);\n","// Create new topic and invite users or send an invite.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport ContactList from '../widgets/contact-list.jsx';\nimport NewTopicById from '../widgets/new-topic-by-id.jsx';\nimport NewTopicGroup from '../widgets/new-topic-group.jsx';\nimport SearchContacts from '../widgets/search-contacts.jsx';\n\nimport HashNavigation from '../lib/navigation.js';\nimport { theCard } from '../lib/utils.js';\n\nconst messages = defineMessages({\n search_for_contacts: {\n id: \"search_for_contacts\",\n defaultMessage: \"Use search to find contacts\",\n description: \"Text shown in contacts view when user entered no search query.\"\n },\n search_no_results: {\n id: \"search_no_results\",\n defaultMessage: \"Search returned no results\",\n description: \"Text shown in contacts view when query returned no results.\"\n },\n search_placeholder: {\n id: \"search_placeholder\",\n defaultMessage: \"List like email:alice@example.com, tel:17025550003...\",\n description: \"Placeholder in contacts search field\"\n },\n});\n\nclass NewTopicView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n tabSelected: 'find',\n searchQuery: null\n };\n\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleSearchResultSelected = this.handleSearchResultSelected.bind(this);\n this.handleNewGroupSubmit = this.handleNewGroupSubmit.bind(this);\n this.handleGroupByID = this.handleGroupByID.bind(this);\n }\n\n componentDidMount() {\n this.props.onInitFind();\n }\n\n handleTabClick(e) {\n e.preventDefault();\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'tab', e.currentTarget.dataset.id));\n this.setState({tabSelected: e.currentTarget.dataset.id});\n }\n\n handleSearchContacts(query) {\n this.props.onSearchContacts(query);\n this.setState({searchQuery: Tinode.isNullValue(query) ? null : query});\n }\n\n handleSearchResultSelected(name) {\n if (this.state.tabSelected == 'find') {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(name);\n }\n }\n\n handleNewGroupSubmit(name, description, dataUrl, priv, tags, isChannel) {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(undefined,\n {public: theCard(name, dataUrl, null, description), private: priv, tags: tags}, isChannel);\n }\n\n handleGroupByID(topicName) {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(topicName);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const no_contacts_placeholder = formatMessage(this.state.searchQuery ?\n messages.search_no_results : messages.search_for_contacts);\n const search_placeholder = formatMessage(messages.search_placeholder);\n return (\n
\n \n {this.state.tabSelected === 'grp' ?\n :\n this.state.tabSelected === 'byid' ?\n :\n
\n \n \n
}\n
\n );\n }\n};\n\nexport default injectIntl(NewTopicView);\n","// A password reset form.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nimport HashNavigation from '../lib/navigation.js';\n\nexport default class PasswordResetView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n email: '',\n password: '',\n sent: false\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleEmailChange = this.handleEmailChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n }\n\n componentDidMount() {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n this.setState({token: parsed.params.token, scheme: parsed.params.scheme});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n if (this.state.token) {\n this.props.onReset(this.state.scheme, this.state.password.trim(), this.state.token);\n } else if (this.state.sent) {\n this.props.onCancel();\n } else {\n const email = this.state.email.trim();\n this.setState({email: email});\n this.props.onRequest('email', email).then(() => {\n this.setState({sent: true});\n });\n }\n }\n\n handleEmailChange(e) {\n this.setState({email: e.target.value});\n }\n\n handlePasswordChange(e) {\n this.setState({password: e.target.value});\n }\n\n render() {\n return (\n
\n {(this.state.token && this.state.scheme) ?\n <>\n {\n (placeholder) => \n }\n : this.state.sent ?\n <>\n
\n
task_alt
\n
\n
{this.state.email} }}\n description=\"Notification that the email with password reset instructions has been sent\" />
\n \n :\n <>\n \n {\n (placeholder) => \n }\n \n }\n
\n \n
\n
\n );\n }\n}\n","// Tinode config panel.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport HostSelector from '../widgets/host-selector.jsx';\n\nexport default class SettingsView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n transport: props.transport || 'def',\n serverAddress: props.serverAddress,\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTransportSelected = this.handleTransportSelected.bind(this);\n this.handleServerAddressChange = this.handleServerAddressChange.bind(this);\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.props.onUpdate({\n transport: this.state.transport,\n serverAddress: this.state.serverAddress\n });\n }\n\n handleTransportSelected(e) {\n this.setState({transport: e.currentTarget.value});\n }\n\n handleServerAddressChange(name) {\n this.setState({serverAddress: name});\n }\n\n render() {\n const names = {def: \"default\", ws: \"websocket\", lp: \"long polling\"};\n const transportOptions = [];\n ['def', 'ws', 'lp'].map((item) => {\n const id = 'transport-' + item;\n const name = names[item];\n transportOptions.push(\n
  • \n \n \n
  • \n );\n });\n\n return (\n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n
      \n {transportOptions}\n
    \n
    \n
    \n \n
    \n \n );\n }\n};\n","import React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport SideNavbar from '../widgets/side-navbar.jsx';\nimport TopicCommon from '../widgets/topic-common.jsx';\n\nimport AccountSettingsView from './account-settings-view.jsx';\nimport ContactsView from './contacts-view.jsx';\nimport CreateAccountView from './create-account-view.jsx';\nimport AccNotificationsView from './acc-notifications-view.jsx';\nimport AccSecurityView from './acc-security-view.jsx';\nimport AccSupportView from './acc-support-view.jsx';\nimport LoginView from './login-view.jsx';\nimport NewTopicView from './new-topic-view.jsx';\nimport PasswordResetView from './password-reset-view.jsx';\nimport SettingsView from './settings-view.jsx';\nimport ValidationView from './validation-view.jsx';\n\n// Panel titles for translation.\nconst messages = defineMessages({\n login: {\n id: 'sidepanel_title_login',\n description: 'Sidepanel title for LoginView.',\n defaultMessage: 'Sign In'\n },\n register: {\n id: 'sidepanel_title_register',\n description: 'Sidepanel title for CreateAccountView.',\n defaultMessage: 'Create Account'\n },\n settings: {\n id: 'sidepanel_title_settings',\n description: 'Sidepanel title for SettingsView.',\n defaultMessage: 'Settings'\n },\n edit: {\n id: 'sidepanel_title_account_settings',\n description: 'Sidepanel title for AccountSettingsView.',\n defaultMessage: 'Account Settings'\n },\n general: {\n id: 'panel_title_general',\n description: 'Title for TopicCommon.',\n defaultMessage: 'General'\n },\n security: {\n id: 'panel_title_security',\n description: 'Title for TopicSecirity and AccSecurity.',\n defaultMessage: 'Security'\n },\n crop: {\n id: 'panel_title_crop',\n description: 'Title for AvatarCropView.',\n defaultMessage: 'Drag to Adjust'\n },\n notif: {\n id: 'sidepanel_title_acc_notifications',\n description: 'Sidepanel title for AccNotificationsView.',\n defaultMessage: 'Notifications'\n },\n support: {\n id: 'sidepanel_title_acc_support',\n description: 'Sidepanel title for AccSupportView.',\n defaultMessage: 'Support'\n },\n newtpk: {\n id: 'sidepanel_title_newtpk',\n description: 'Sidepanel title for NewTopicView.',\n defaultMessage: 'Start New Chat'\n },\n cred: {\n id: 'sidepanel_title_cred',\n description: 'Sidepanel title for ValidationView.',\n defaultMessage: 'Confirm Credentials'\n },\n reset: {\n id: 'sidepanel_title_reset',\n description: 'Sidepanel title for PasswordResetView.',\n defaultMessage: 'Reset Password'\n },\n archive: {\n id: 'sidepanel_title_archive',\n description: 'Sidepanel title for ContactsView-Archive.',\n defaultMessage: 'Archived Chats'\n },\n blocked: {\n id: 'sidepanel_title_blocked',\n description: 'Sidepanel title for ContactsView-Blocked.',\n defaultMessage: 'Blocked Chats'\n }\n});\n\nclass SidepanelView extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleNewTopic = this.handleNewTopic.bind(this);\n }\n\n handleNewTopic() {\n this.props.onNavigate('newtpk');\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const view = this.props.state || (this.props.myUserId ? 'contacts' : 'login');\n\n let title, avatar, badges;\n if (view == 'contacts') {\n title = this.props.title;\n avatar = this.props.avatar ? this.props.avatar : true;\n badges = this.props.trustedBadges;\n } else {\n title = formatMessage(messages[view]);\n avatar = false;\n badges = null;\n }\n\n let onCancel;\n if (['login', 'contacts'].indexOf(view) == -1) {\n onCancel = this.props.onCancel;\n }\n\n return (\n
    \n \n\n \n\n \n\n {view === 'login' ?\n :\n\n view === 'register' ?\n :\n\n view === 'settings' ?\n :\n\n view === 'edit' ?\n :\n\n (view === 'general' || view === 'crop') ?\n :\n\n view === 'notif' ?\n :\n\n view === 'security' ?\n :\n\n view === 'support' ?\n :\n\n (view === 'contacts' || view == 'archive' || view == 'blocked') ?\n :\n\n view === 'newtpk' ?\n :\n\n view === 'cred' ?\n :\n\n view === 'reset' ?\n :\n null}\n
    \n );\n }\n};\n\nexport default injectIntl(SidepanelView);\n","// The top-level class to hold all functionality together.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { initializeApp as firebaseInitApp } from 'firebase/app';\nimport { getMessaging as firebaseGetMessaging, getToken as firebaseGetToken,\n deleteToken as firebaseDelToken, onMessage as firebaseOnMessage } from 'firebase/messaging';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Alert from '../widgets/alert.jsx';\nimport ContextMenu from '../widgets/context-menu.jsx';\nimport ForwardDialog from '../widgets/forward-dialog.jsx';\n\nimport InfoView from './info-view.jsx';\nimport MessagesView from './messages-view.jsx';\nimport SidepanelView from './sidepanel-view.jsx';\n\nimport { API_KEY, APP_NAME, DEFAULT_P2P_ACCESS_MODE, FORWARDED_PREVIEW_LENGTH, LOGGING_ENABLED,\n MEDIA_BREAKPOINT, RECEIVED_DELAY } from '../config.js';\nimport { PACKAGE_VERSION } from '../version.js';\nimport { base64ReEncode, makeImageUrl } from '../lib/blob-helpers.js';\nimport { detectServerAddress, isLocalHost, isSecureConnection } from '../lib/host-name.js';\nimport LocalStorageUtil from '../lib/local-storage.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { secondsToTime } from '../lib/strformat.js'\nimport { updateFavicon } from '../lib/utils.js';\n\n// Sound to play on message received.\nconst POP_SOUND = new Audio('audio/msg.mp3');\n\nconst messages = defineMessages({\n reconnect_countdown: {\n id: 'reconnect_countdown',\n defaultMessage: 'Disconnected. Reconnecting in {seconds}…',\n description: 'Message shown when an app update is available.'\n },\n reconnect_now: {\n id: 'reconnect_now',\n defaultMessage: 'Try now',\n description: 'Prompt for reconnecting now'\n },\n push_init_failed: {\n id: 'push_init_failed',\n defaultMessage: 'Failed to initialize push notifications',\n description: 'Error message when push notifications have failed to initialize.'\n },\n invalid_security_token: {\n id: 'invalid_security_token',\n defaultMessage: 'Invalid security token',\n description: 'Error message when resetting password.'\n },\n no_connection: {\n id: 'no_connection',\n defaultMessage: 'No connection',\n description: 'Warning that the user is offline.'\n },\n code_doesnot_match: {\n id: 'code_doesnot_match',\n defaultMessage: 'Code does not match',\n description: 'Error message when the credential validation code is incorrect.'\n },\n menu_item_info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n }\n});\n\nclass TinodeWeb extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n this.state = this.getBlankState();\n\n this.handleResize = this.handleResize.bind(this);\n this.handleHashRoute = this.handleHashRoute.bind(this);\n this.handleOnline = this.handleOnline.bind(this);\n this.checkForAppUpdate = this.checkForAppUpdate.bind(this);\n this.handleVisibilityEvent = this.handleVisibilityEvent.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleLoginRequest = this.handleLoginRequest.bind(this);\n this.handlePersistenceChange = this.handlePersistenceChange.bind(this);\n this.handleConnected = this.handleConnected.bind(this);\n this.handleAutoreconnectIteration = this.handleAutoreconnectIteration.bind(this);\n this.doLogin = this.doLogin.bind(this);\n this.handleCredentialsRequest = this.handleCredentialsRequest.bind(this);\n this.handleLoginSuccessful = this.handleLoginSuccessful.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.tnMeMetaDesc = this.tnMeMetaDesc.bind(this);\n this.tnMeContactUpdate = this.tnMeContactUpdate.bind(this);\n this.tnMeSubsUpdated = this.tnMeSubsUpdated.bind(this);\n this.resetContactList = this.resetContactList.bind(this);\n this.tnData = this.tnData.bind(this);\n this.tnInitFind = this.tnInitFind.bind(this);\n this.tnFndSubsUpdated = this.tnFndSubsUpdated.bind(this);\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleTopicSelected = this.handleTopicSelected.bind(this);\n this.handleHideMessagesView = this.handleHideMessagesView.bind(this);\n this.handleSendMessage = this.handleSendMessage.bind(this);\n this.handleNewChatInvitation = this.handleNewChatInvitation.bind(this);\n this.handleNewAccount = this.handleNewAccount.bind(this);\n this.handleNewAccountRequest = this.handleNewAccountRequest.bind(this);\n this.handleUpdatePasswordRequest = this.handleUpdatePasswordRequest.bind(this);\n this.handleUpdateAccountTagsRequest = this.handleUpdateAccountTagsRequest.bind(this);\n this.handleToggleIncognitoMode = this.handleToggleIncognitoMode.bind(this);\n this.handleSettings = this.handleSettings.bind(this);\n this.handleGlobalSettings = this.handleGlobalSettings.bind(this);\n this.handleShowArchive = this.handleShowArchive.bind(this);\n this.handleShowBlocked = this.handleShowBlocked.bind(this);\n this.handleToggleMessageSounds = this.handleToggleMessageSounds.bind(this);\n this.handleCredAdd = this.handleCredAdd.bind(this);\n this.handleCredDelete = this.handleCredDelete.bind(this);\n this.handleCredConfirm = this.handleCredConfirm.bind(this);\n this.initFCMessaging = this.initFCMessaging.bind(this);\n this.toggleFCMToken = this.toggleFCMToken.bind(this);\n this.handlePushMessage = this.handlePushMessage.bind(this);\n this.handleSidepanelCancel = this.handleSidepanelCancel.bind(this);\n this.handleStartTopicRequest = this.handleStartTopicRequest.bind(this);\n this.handleNewTopicCreated = this.handleNewTopicCreated.bind(this);\n this.handleTopicUpdateRequest = this.handleTopicUpdateRequest.bind(this);\n this.handleUnarchive = this.handleUnarchive.bind(this);\n this.handleChangePermissions = this.handleChangePermissions.bind(this);\n this.handleTagsUpdateRequest = this.handleTagsUpdateRequest.bind(this);\n this.handleLogout = this.handleLogout.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n this.handleDeleteTopicRequest = this.handleDeleteTopicRequest.bind(this);\n this.handleDeleteMessagesRequest = this.handleDeleteMessagesRequest.bind(this);\n this.handleLeaveUnsubRequest = this.handleLeaveUnsubRequest.bind(this);\n this.handleBlockTopicRequest = this.handleBlockTopicRequest.bind(this);\n this.handleReportTopic = this.handleReportTopic.bind(this);\n this.handleShowContextMenu = this.handleShowContextMenu.bind(this);\n this.defaultTopicContextMenu = this.defaultTopicContextMenu.bind(this);\n this.handleHideContextMenu = this.handleHideContextMenu.bind(this);\n this.handleShowAlert = this.handleShowAlert.bind(this);\n this.handleShowInfoView = this.handleShowInfoView.bind(this);\n this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this);\n this.handleValidateCredentialsRequest = this.handleValidateCredentialsRequest.bind(this);\n this.handlePasswordResetRequest = this.handlePasswordResetRequest.bind(this);\n this.handleResetPassword = this.handleResetPassword.bind(this);\n this.handleContextMenuAction = this.handleContextMenuAction.bind(this);\n\n this.handleShowForwardDialog = this.handleShowForwardDialog.bind(this);\n this.handleHideForwardDialog = this.handleHideForwardDialog.bind(this);\n\n this.sendMessageToTopic = this.sendMessageToTopic.bind(this);\n }\n\n getBlankState() {\n const settings = LocalStorageUtil.getObject('settings') || {};\n const persist = !!LocalStorageUtil.getObject('keep-logged-in');\n\n return {\n connected: false,\n // Connected and subscribed to 'me'\n ready: false,\n // Try to re-login on new connection.\n autoLogin: false,\n transport: settings.transport || null,\n serverAddress: settings.serverAddress || detectServerAddress(),\n serverVersion: \"no connection\",\n // \"On\" is the default, so saving the \"off\" state.\n messageSounds: !settings.messageSoundsOff,\n incognitoMode: false,\n // Persistent request to enable alerts.\n desktopAlerts: persist && !!settings.desktopAlerts,\n // Enable / disable checkbox.\n desktopAlertsEnabled: (isSecureConnection() || isLocalHost()) &&\n (typeof firebaseInitApp != 'undefined') && (typeof navigator != 'undefined') &&\n (typeof FIREBASE_INIT != 'undefined'),\n firebaseToken: persist ? LocalStorageUtil.getObject('firebase-token') : null,\n\n applicationVisible: !document.hidden,\n\n errorText: '',\n errorLevel: null,\n errorAction: undefined,\n errorActionText: null,\n\n sidePanelSelected: 'login',\n sidePanelTitle: null,\n sidePanelAvatar: null,\n myTrustedBadges: [],\n loadSpinnerVisible: false,\n\n login: '',\n password: '',\n persist: persist,\n myUserId: null,\n liveConnection: navigator.onLine,\n topicSelected: '',\n topicSelectedOnline: false,\n topicSelectedAcs: null,\n newTopicParams: null,\n loginDisabled: false,\n displayMobile: (window.innerWidth <= MEDIA_BREAKPOINT),\n infoPanel: undefined,\n mobilePanel: 'sidepanel',\n\n contextMenuVisible: false,\n contextMenuBounds: null,\n contextMenuClickAt: null,\n contextMenuParams: null,\n contextMenuItems: [],\n\n forwardDialogVisible: false,\n forwardMessage: null,\n\n // Modal alert dialog.\n alertVisible: false,\n alertParams: {},\n\n // Chats as shown in the ContactsView\n chatList: [],\n // Contacts returned by a search query.\n searchResults: [],\n // Merged results of a search query and p2p chats.\n searchableContacts: [],\n credMethod: undefined,\n credCode: undefined,\n // Topic to go to after login.\n requestedTopic: undefined\n };\n }\n\n componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n window.addEventListener('online', (e) => { this.handleOnline(true); });\n window.addEventListener('offline', (e) => { this.handleOnline(false); });\n window.addEventListener('hashchange', this.handleHashRoute);\n\n // Process background notifications from the service worker.\n if (typeof BroadcastChannel == 'function') {\n const serviceWorkerChannel = new BroadcastChannel('tinode-sw');\n serviceWorkerChannel.addEventListener('message', this.handlePushMessage);\n } else {\n // Safari is broken by design.\n console.warn(\"Your browser does not support BroadcastChannel. Some features will not be available\");\n }\n\n // Window/tab visible or invisible for pausing timers.\n document.addEventListener('visibilitychange', this.handleVisibilityEvent);\n\n this.setState({\n viewportWidth: document.documentElement.clientWidth,\n viewportHeight: document.documentElement.clientHeight\n });\n\n new Promise((resolve, reject) => {\n this.tinode = TinodeWeb.tnSetup(this.state.serverAddress, this.state.transport,\n this.props.intl.locale, this.state.persist, resolve);\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n }).then(() => {\n // Initialize desktop alerts.\n if (this.state.desktopAlertsEnabled) {\n this.initFCMessaging().then(() => {\n if (this.state.desktopAlerts) {\n this.tinode.setDeviceToken(this.state.firebaseToken);\n }\n }).catch(() => {\n // do nothing: handled earlier.\n // catch needed to pervent unnecessary logging of error.\n });\n }\n\n // Parse and save the hash navigation params.\n const parsedNav = HashNavigation.parseUrlHash(window.location.hash);\n\n // Read contacts from cache.\n this.resetContactList();\n\n const token = this.state.persist ? LocalStorageUtil.getObject('auth-token') : undefined;\n if (token) {\n this.setState({autoLogin: true});\n\n // When reading from storage, date is returned as string.\n token.expires = new Date(token.expires);\n this.tinode.setAuthToken(token);\n this.tinode.connect().catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n\n // Maybe navigate to home screen.\n if (!['cred', 'reset', 'register'].includes(parsedNav.path[0])) {\n // Save possible topic name.\n this.setState({requestedTopic: parsedNav.path[1]});\n HashNavigation.navigateTo('');\n }\n\n this.readTimer = null;\n this.readTimerCallback = null;\n\n this.handleHashRoute();\n });\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n window.removeEventListener('hashchange', this.handleHashRoute);\n document.removeEventListener('visibilitychange', this.handleVisibilityEvent);\n }\n\n // Setup transport (usually websocket) and server address. This will terminate connection with the server.\n static tnSetup(serverAddress, transport, locale, persistentCache, onSetupCompleted) {\n const tinode = new Tinode({appName: APP_NAME, host: serverAddress, apiKey: API_KEY, transport: transport,\n secure: isSecureConnection(), persist: persistentCache}, onSetupCompleted);\n tinode.setHumanLanguage(locale);\n tinode.enableLogging(LOGGING_ENABLED, true);\n return tinode;\n }\n\n // Tinode received a push notification from the server.\n handlePushMessage(payload) {\n const data = payload.data || {};\n switch (data.what) {\n case 'msg':\n if (Tinode.isChannelTopicName(data.topic)) {\n // The last argument is a fake user Id: otherwise the update is seen as one from the current user.\n this.tinode.oobNotification('msg', data.topic, data.seq, 'fake-uid');\n }\n break;\n case 'read':\n // Message read on another device, clear it here.\n this.tinode.oobNotification('read', data.topic, data.seq);\n break;\n default:\n console.warn(\"Unknown push type ignored\", data.what, data);\n }\n }\n\n initFCMessaging() {\n const {formatMessage, locale} = this.props.intl;\n const onError = (msg, err) => {\n console.error(msg, err);\n this.handleError(formatMessage(messages.push_init_failed), 'err');\n this.setState({desktopAlertsEnabled: false, firebaseToken: null});\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n }\n\n try {\n this.fcm = firebaseGetMessaging(firebaseInitApp(FIREBASE_INIT, APP_NAME));\n return navigator.serviceWorker.register('/service-worker.js').then((reg) => {\n this.checkForAppUpdate(reg);\n reg.active.postMessage(JSON.stringify({locale: locale, version: PACKAGE_VERSION}));\n return reg;\n }).then((reg) => {\n // Request token.\n return TinodeWeb.requestFCMToken(this.fcm, reg);\n }).then((token) => {\n const persist = LocalStorageUtil.getObject('keep-logged-in');\n if (token != this.state.firebaseToken) {\n this.tinode.setDeviceToken(token);\n if (persist) {\n LocalStorageUtil.setObject('firebase-token', token);\n }\n }\n this.setState({firebaseToken: token, desktopAlerts: true});\n if (persist) {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: true});\n }\n\n // Handhe FCM pushes\n // (a) for channels always,\n // (b) pushes when the app is in foreground but has no focus.\n firebaseOnMessage(this.fcm, (payload) => { this.handlePushMessage(payload); });\n }).catch((err) => {\n // SW registration or FCM has failed :(\n onError(err);\n throw err;\n });\n } catch (err) {\n onError(err);\n return Promise.reject(err);\n }\n }\n\n // Google's FCM API is idiotic.\n static requestFCMToken(fcm, sw) {\n return firebaseGetToken(fcm, {\n serviceWorkerRegistration: sw,\n vapidKey: FIREBASE_INIT.messagingVapidKey\n }).then((token) => {\n if (token) {\n return token;\n } else {\n // Try to request permissions.\n return Notification.requestPermission().then((permission) => {\n if (permission === 'granted') {\n return firebaseGetToken(fcm, {\n serviceWorkerRegistration: reg,\n vapidKey: FIREBASE_INIT.messagingVapidKey\n }).then((token) => {\n if (token) {\n return token;\n } else {\n throw new Error(\"Failed to initialize notifications\");\n }\n });\n } else {\n throw new Error(\"No permission to send notifications: \" + permission);\n }\n });\n }\n });\n }\n\n handleResize() {\n const mobile = document.documentElement.clientWidth <= MEDIA_BREAKPOINT;\n this.setState({\n viewportWidth: document.documentElement.clientWidth,\n viewportHeight: document.documentElement.clientHeight\n });\n if (this.state.displayMobile != mobile) {\n this.setState({displayMobile: mobile});\n }\n }\n\n // Check if a newer version of TinodeWeb app is available at the server.\n checkForAppUpdate(reg) {\n reg.onupdatefound = () => {\n const installingWorker = reg.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state == 'installed' && navigator.serviceWorker.controller) {\n const msg = <>\n \n \n .;\n this.handleError(msg, 'info');\n }\n }\n }\n }\n\n // Handle for hashchange event: display appropriate panels.\n handleHashRoute() {\n const hash = HashNavigation.parseUrlHash(window.location.hash);\n if (hash.path && hash.path.length > 0) {\n // Left-side panel selector.\n if (['register','settings','edit','notif','security','support','general','crop',\n 'cred','reset','newtpk','archive','blocked','contacts',''].includes(hash.path[0])) {\n this.setState({sidePanelSelected: hash.path[0]});\n } else {\n console.warn(\"Unknown sidepanel view\", hash.path[0]);\n }\n\n // Topic for MessagesView selector.\n let topicName = hash.path[1] || null;\n if (topicName != this.state.topicSelected) {\n if (!Tinode.topicType(topicName)) {\n // Clear invalid topic name.\n topicName = null;\n }\n this.setState({\n topicSelected: topicName,\n topicSelectedAcs: this.tinode.getTopicAccessMode(topicName)\n });\n }\n } else {\n // Empty hashpath\n this.setState({sidePanelSelected: '', topicSelected: null});\n }\n\n // Save validation credentials, if available.\n if (hash.params.method) {\n this.setState({ credMethod: hash.params.method });\n }\n if (hash.params.code) {\n this.setState({ credCode: hash.params.code });\n }\n\n // Additional parameters of panels.\n this.setState({\n infoPanel: hash.params.info,\n newTopicTabSelected: hash.params.tab\n });\n }\n\n handleOnline(online) {\n if (online) {\n this.handleError();\n clearInterval(this.reconnectCountdown);\n this.tinode.reconnect();\n } else {\n this.handleError(this.props.intl.formatMessage(messages.no_connection), 'warn');\n }\n this.setState({liveConnection: online});\n }\n\n handleVisibilityEvent() {\n this.setState({applicationVisible: !document.hidden});\n }\n\n handleError(err, level, action, actionText) {\n this.setState({errorText: err, errorLevel: level, errorAction: action, errorActionText: actionText});\n }\n\n // User clicked Login button in the side panel.\n handleLoginRequest(login, password) {\n this.setState({\n loginDisabled: true,\n login: login,\n password: password,\n loadSpinnerVisible: true,\n autoLogin: true\n });\n this.handleError('', null);\n\n if (this.tinode.isConnected()) {\n this.doLogin(login, password, {meth: this.state.credMethod, resp: this.state.credCode});\n } else {\n this.tinode.connect().catch((err) => {\n // Socket error\n this.setState({loginDisabled: false, autoLogin: false, loadSpinnerVisible: false});\n this.handleError(err.message, 'err');\n });\n }\n }\n\n // Enable or disable saving the password and IndexedDB.\n handlePersistenceChange(persist) {\n if (persist) {\n this.tinode.initStorage().then(() => {\n LocalStorageUtil.setObject('keep-logged-in', true);\n this.setState({persist: true});\n });\n } else {\n this.tinode.clearStorage().then(() => {\n LocalStorageUtil.setObject('keep-logged-in', false);\n this.setState({persist: false});\n });\n }\n }\n\n // Connection succeeded.\n handleConnected() {\n // Just to be sure.\n clearInterval(this.reconnectCountdown);\n this.handleError();\n\n const params = this.tinode.getServerInfo();\n this.setState({\n serverVersion: params.ver + ' ' + (params.build ? params.build : 'none')\n });\n\n if (this.state.autoLogin) {\n this.doLogin(this.state.login, this.state.password, {meth: this.state.credMethod, resp: this.state.credCode});\n }\n }\n\n // Called for each auto-reconnect iteration.\n handleAutoreconnectIteration(sec, prom) {\n clearInterval(this.reconnectCountdown);\n\n if (sec < 0) {\n // Clear error\n this.handleError();\n return;\n }\n\n if (prom) {\n // Reconnecting now\n prom.then(() => {\n // Reconnected: clear error\n this.handleError();\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n return;\n }\n\n const {formatMessage} = this.props.intl;\n let count = sec / 1000;\n count = count | count;\n this.reconnectCountdown = setInterval(() => {\n const timeLeft = (count > 99) ? secondsToTime(count) : count;\n this.handleError(\n formatMessage(messages.reconnect_countdown, {seconds: timeLeft}),\n 'warn',\n () => {\n clearInterval(this.reconnectCountdown);\n this.tinode.reconnect();\n },\n formatMessage(messages.reconnect_now)\n );\n count -= 1;\n }, 1000);\n }\n\n // Connection lost\n handleDisconnect(err) {\n this.setState({\n connected: false,\n ready: false,\n topicSelectedOnline: false,\n errorText: err && err.message ? err.message : \"Disconnected\",\n errorLevel: err && err.message ? 'err' : 'warn',\n loginDisabled: false,\n contextMenuVisible: false,\n forwardDialogVisible: false,\n serverVersion: \"no connection\"\n });\n }\n\n doLogin(login, password, cred) {\n if (this.tinode.isAuthenticated()) {\n // Already logged in. Go to default screen.\n HashNavigation.navigateTo('');\n return;\n }\n // Sanitize and package credentail.\n cred = Tinode.credential(cred);\n // Try to login with login/password. If they are not available, try token. If no token, ask for login/password.\n let promise = null;\n let token = this.tinode.getAuthToken();\n if (login && password) {\n token = null;\n this.setState({password: null});\n promise = this.tinode.loginBasic(login, password, cred);\n } else if (token) {\n promise = this.tinode.loginToken(token.token, cred);\n }\n\n if (promise) {\n promise.then((ctrl) => {\n if (ctrl.code >= 300 && ctrl.text === 'validate credentials') {\n this.setState({loadSpinnerVisible: false});\n if (cred) {\n this.handleError(this.props.intl.formatMessage(messages.code_doesnot_match), 'warn');\n }\n this.handleCredentialsRequest(ctrl.params);\n } else {\n this.handleLoginSuccessful();\n }\n }).catch((err) => {\n // Login failed, report error.\n this.setState({\n loginDisabled: false,\n credMethod: undefined,\n credCode: undefined,\n loadSpinnerVisible: false,\n autoLogin: false\n });\n this.handleError(err.message, 'err');\n if (token) {\n this.handleLogout();\n }\n HashNavigation.navigateTo('');\n });\n } else {\n // No login credentials provided.\n // Make sure we are on the login page.\n HashNavigation.navigateTo('');\n this.setState({loginDisabled: false});\n }\n }\n\n handleCredentialsRequest(params) {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n parsed.path[0] = 'cred';\n parsed.params['method'] = params.cred[0];\n HashNavigation.navigateTo(HashNavigation.composeUrlHash(parsed.path, parsed.params));\n }\n\n handleLoginSuccessful() {\n this.handleError();\n\n // Refresh authentication token.\n if (LocalStorageUtil.getObject('keep-logged-in')) {\n LocalStorageUtil.setObject('auth-token', this.tinode.getAuthToken());\n }\n\n const goToTopic = this.state.requestedTopic;\n // Logged in fine, subscribe to 'me' attaching callbacks from the contacts view.\n const me = this.tinode.getMeTopic();\n me.onMetaDesc = this.tnMeMetaDesc;\n me.onContactUpdate = this.tnMeContactUpdate;\n me.onSubsUpdated = this.tnMeSubsUpdated;\n this.setState({\n connected: true,\n credMethod: undefined,\n credCode: undefined,\n myUserId: this.tinode.getCurrentUserID(),\n autoLogin: true,\n requestedTopic: undefined,\n });\n // Subscribe, fetch topic desc, the list of subscriptions. Messages are not fetched.\n me.subscribe(\n me.startMetaQuery().\n withLaterSub().\n withDesc().\n withTags().\n withCred().\n build()\n ).catch((err) => {\n this.tinode.disconnect();\n localStorage.removeItem('auth-token');\n this.handleError(err.message, 'err');\n HashNavigation.navigateTo('');\n }).finally(() => {\n this.setState({loadSpinnerVisible: false});\n });\n let urlHash = HashNavigation.setUrlSidePanel(window.location.hash, 'contacts');\n if (goToTopic) {\n urlHash = HashNavigation.setUrlTopic(urlHash, goToTopic);\n }\n HashNavigation.navigateTo(urlHash);\n }\n\n tnMeMetaDesc(desc) {\n if (desc) {\n if (desc.public) {\n this.setState({\n sidePanelTitle: desc.public.fn,\n sidePanelAvatar: makeImageUrl(desc.public.photo)\n });\n }\n if (desc.trusted) {\n const badges = [];\n for (const [key, val] of Object.entries(desc.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n this.setState({\n myTrustedBadges: badges,\n });\n }\n if (desc.acs) {\n this.setState({\n incognitoMode: !desc.acs.isPresencer()\n });\n }\n }\n }\n\n // Reactions to updates to the contact list.\n tnMeContactUpdate(what, cont) {\n if (what == 'on' || what == 'off') {\n this.resetContactList();\n if (this.state.topicSelected == cont.topic) {\n this.setState({topicSelectedOnline: (what == 'on')});\n }\n } else if (what == 'read') {\n this.resetContactList();\n } else if (what == 'msg') {\n // Check if the topic is archived. If so, don't play a sound.\n const topic = this.tinode.getTopic(cont.topic);\n const archived = topic && topic.isArchived();\n\n // New message received. Maybe the message is from the current user, then unread is 0.\n if (cont.unread > 0 && this.state.messageSounds && !archived) {\n // Skip update if the topic is currently open, otherwise the badge will annoyingly flash.\n if (document.hidden || this.state.topicSelected != cont.topic) {\n POP_SOUND.play();\n }\n }\n // Reorder contact list to use possibly updated 'touched'.\n this.resetContactList();\n } else if (what == 'recv') {\n // Explicitly ignoring \"recv\" -- it causes no visible updates to contact list.\n } else if (what == 'gone' || what == 'unsub') {\n // Topic deleted or user unsubscribed. Remove topic from view.\n // If the currently selected topic is gone, clear the selection.\n if (this.state.topicSelected == cont.topic) {\n this.handleTopicSelected(null);\n }\n // Redraw without the deleted topic.\n this.resetContactList();\n } else if (what == 'acs') {\n // Permissions changed. If it's for the currently selected topic,\n // update the views.\n if (this.state.topicSelected == cont.topic) {\n this.setState({topicSelectedAcs: cont.acs});\n }\n } else if (what == 'del') {\n // TODO: messages deleted (hard or soft) -- update pill counter.\n } else if (what == 'upd') {\n // upd - handled by the SDK. Explicitly ignoring here.\n } else {\n // TODO(gene): handle other types of notifications:\n // * ua -- user agent changes (maybe display a pictogram for mobile/desktop).\n console.info(\"Unsupported (yet) presence update:\" + what + \" in: \" + cont.topic);\n }\n }\n\n tnMeSubsUpdated(unused) {\n this.resetContactList();\n }\n\n // Merge search results and contact list to create a single flat\n // list of known contacts for GroupManager to use.\n static prepareSearchableContacts(chatList, foundContacts) {\n const merged = {};\n\n // For chatList topics merge only p2p topics and convert them to the\n // same format as foundContacts.\n for (const c of chatList) {\n if (Tinode.isP2PTopicName(c.topic)) {\n merged[c.topic] = {\n user: c.topic,\n updated: c.updated,\n public: c.public,\n private: c.private,\n acs: c.acs\n };\n }\n }\n\n // Add all foundCountacts if they have not been added already.\n for (const c of foundContacts) {\n if (!merged[c.user]) {\n merged[c.user] = c;\n }\n }\n\n return Object.values(merged);\n }\n\n resetContactList() {\n const newState = {\n chatList: []\n };\n\n if (!this.state.ready) {\n newState.ready = true;\n }\n\n this.tinode.getMeTopic().contacts((c) => {\n if (!c.topic && !c.user) {\n // Contacts expect c.topic to be set.\n c.topic = c.name;\n }\n\n newState.chatList.push(c);\n if (this.state.topicSelected == c.topic) {\n newState.topicSelectedOnline = c.online;\n newState.topicSelectedAcs = c.acs;\n }\n });\n\n const past = new Date(0);\n newState.chatList.sort((a, b) => {\n return (a.touched || past).getTime() - (b.touched || past).getTime();\n });\n\n // Merge search results and chat list.\n newState.searchableContacts = TinodeWeb.prepareSearchableContacts(newState.chatList, this.state.searchResults);\n this.setState(newState);\n }\n\n // Sending \"received\" notifications\n tnData(data) {\n const topic = this.tinode.getTopic(data.topic);\n if (topic.msgStatus(data, true) >= Tinode.MESSAGE_STATUS_SENT && data.from != this.state.myUserId) {\n clearTimeout(this.receivedTimer);\n this.receivedTimer = setTimeout(() => {\n this.receivedTimer = undefined;\n topic.noteRecv(data.seq);\n }, RECEIVED_DELAY);\n }\n }\n\n /* Fnd topic: find contacts by tokens */\n tnInitFind() {\n const fnd = this.tinode.getFndTopic();\n fnd.onSubsUpdated = this.tnFndSubsUpdated;\n if (fnd.isSubscribed()) {\n this.tnFndSubsUpdated();\n } else {\n fnd.subscribe(fnd.startMetaQuery().withSub().build()).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n tnFndSubsUpdated() {\n const foundContacts = [];\n // Don't attempt to create P2P topics which already exist. Server will reject the duplicates.\n this.tinode.getFndTopic().contacts((s) => {\n foundContacts.push(s);\n });\n this.setState({\n searchResults: foundContacts,\n searchableContacts: TinodeWeb.prepareSearchableContacts(this.state.chatList, foundContacts)\n });\n }\n\n /** Called when the user enters a contact into the contact search field in the NewAccount panel\n @param query {Array} is an array of contacts to search for\n */\n handleSearchContacts(query) {\n const fnd = this.tinode.getFndTopic();\n fnd.setMeta({desc: {public: query}}).then((ctrl) => {\n return fnd.getMeta(fnd.startMetaQuery().withSub().build());\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n // User clicked on a topic in the side panel or deleted a topic.\n handleTopicSelected(topicName) {\n // Clear newTopicParams after use.\n if (this.state.newTopicParams && this.state.newTopicParams._topicName != topicName) {\n this.setState({\n newTopicParams: null\n });\n }\n\n if (topicName) {\n this.setState({\n errorText: '',\n errorLevel: null,\n mobilePanel: 'topic-view',\n infoPanel: undefined\n });\n // Different topic selected.\n if (this.state.topicSelected != topicName) {\n this.setState({\n topicSelectedOnline: this.tinode.isTopicOnline(topicName),\n topicSelectedAcs: this.tinode.getTopicAccessMode(topicName),\n forwardMessage: null\n });\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', topicName));\n }\n } else {\n // Currently selected contact deleted\n this.setState({\n errorText: '',\n errorLevel: null,\n mobilePanel: 'sidepanel',\n topicSelectedOnline: false,\n topicSelectedAcs: null,\n infoPanel: undefined,\n forwardMessage: null\n });\n\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', null));\n }\n }\n\n // In mobile view user requested to show sidepanel\n handleHideMessagesView() {\n this.setState({\n mobilePanel: 'sidepanel'\n });\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, null));\n }\n\n // User is sending a message, either plain text or a drafty object, possibly\n // with attachments.\n // - msg - Drafty message with content\n // - promise - Promise to be resolved when the upload is completed\n // - uploadCompletionPromise - for tracking progress\n // - head - head dictionary to be attached to the message\n handleSendMessage(msg, uploadCompletionPromise, uploader, head) {\n const topic = this.tinode.getTopic(this.state.topicSelected);\n this.sendMessageToTopic(topic, msg, uploadCompletionPromise, uploader, head);\n }\n\n sendMessageToTopic(topic, msg, uploadCompletionPromise, uploader, head) {\n msg = topic.createMessage(msg, false);\n // The uploader is used to show progress.\n msg._uploader = uploader;\n\n if (head) {\n msg.head = Object.assign(msg.head || {}, head);\n }\n\n const completion = [];\n if (uploadCompletionPromise) {\n completion.push(uploadCompletionPromise);\n }\n\n if (!topic.isSubscribed()) {\n // Topic is not subscribed yet. Subscribe.\n const subscribePromise =\n topic.subscribe()\n .then(() => {\n // If there are unsent messages, try sending them now.\n topic.queuedMessages(pub => {\n if (pub._sending || pub.seq == msg.seq) {\n return;\n }\n if (topic.isSubscribed()) {\n topic.publishMessage(pub);\n }\n });\n });\n completion.push(subscribePromise);\n }\n\n topic.publishDraft(msg, Promise.all(completion))\n .then(_ => {\n if (topic.isArchived()) {\n topic.archive(false);\n }\n })\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleNewChatInvitation(topicName, action) {\n const topic = this.tinode.getTopic(topicName);\n let response = null;\n switch (action) {\n case 'accept':\n // Accept given permissions.\n const mode = topic.getAccessMode().getGiven();\n response = topic.setMeta({sub: {mode: mode}});\n if (topic.isP2PType()) {\n // For P2P topics change 'given' permission of the peer too.\n // In p2p topics the other user has the same name as the topic.\n response = response.then((ctrl) => {\n topic.setMeta({sub: {user: topicName, mode: mode}});\n });\n }\n break;\n case 'delete':\n // Ignore invitation by deleting it.\n response = topic.delTopic(true);\n break;\n case 'block':\n // Ban the topic making futher invites impossible.\n // Just self-ban.\n const am = topic.getAccessMode().updateWant('-JP').getWant();\n response = topic.setMeta({sub: {mode: am}}).then((ctrl) => {\n return this.handleTopicSelected(null);\n });\n break;\n default:\n console.warn(\"Unknown invitation action\", '\"' + action + '\"\"');\n }\n\n if (response != null) {\n response.catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n // User chose a Sign Up menu item.\n handleNewAccount() {\n this.handleError();\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, 'register'));\n }\n\n // Actual registration of a new account.\n handleNewAccountRequest(login_, password_, public_, cred_, tags_) {\n // Clear old error, if any.\n this.handleError();\n\n this.tinode.connect(this.state.serverAddress)\n .then(() => {\n return this.tinode.createAccountBasic(login_, password_,\n {public: public_, tags: tags_, cred: Tinode.credential(cred_)});\n }).then((ctrl) => {\n if (ctrl.code >= 300 && ctrl.text == 'validate credentials') {\n this.handleCredentialsRequest(ctrl.params);\n } else {\n this.handleLoginSuccessful(this);\n }\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleToggleIncognitoMode(on) {\n // Make state undefined.\n this.setState({incognitoMode: null});\n\n const me = this.tinode.getMeTopic();\n const am = me.getAccessMode().updateWant(on ? '-P' : '+P').getWant();\n me.setMeta({sub: {mode: am}}).catch((err) => {\n // Request failed, keep existing state.\n this.setState({incognitoMode: !on});\n this.handleError(err.message, 'err');\n });\n }\n\n handleUpdateAccountTagsRequest(tags) {\n this.tinode.getMeTopic().setMeta({tags: tags})\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n // User chose Settings menu item.\n handleSettings() {\n this.handleError();\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'edit' : 'settings'));\n }\n\n // User updated global parameters.\n handleGlobalSettings(settings) {\n const serverAddress = settings.serverAddress || this.state.serverAddress;\n const transport = settings.transport || this.state.transport;\n if (this.tinode) {\n this.tinode.clearStorage();\n this.tinode.onDisconnect = undefined;\n this.tinode.disconnect();\n }\n this.tinode = TinodeWeb.tnSetup(serverAddress, transport, this.props.intl.locale,\n LocalStorageUtil.getObject('keep-logged-in'));\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n\n this.setState({\n serverAddress: serverAddress,\n transport: transport\n });\n LocalStorageUtil.setObject('settings', {\n serverAddress: serverAddress,\n transport: transport\n });\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, ''));\n }\n\n // User chose 'Archived chats'.\n handleShowArchive() {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'archive' : ''));\n }\n\n // User viewes 'Blocked chats'.\n handleShowBlocked() {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'blocked' : ''));\n }\n\n toggleFCMToken(enabled) {\n if (enabled) {\n this.setState({desktopAlerts: null});\n if (!this.state.firebaseToken) {\n this.initFCMessaging();\n } else {\n this.setState({desktopAlerts: true});\n if (LocalStorageUtil.getObject('keep-logged-in')) {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: true});\n }\n }\n } else if (this.state.firebaseToken && this.fcm) {\n firebaseDelToken(this.fcm).catch((err) => {\n console.error(\"Unable to delete token.\", err);\n }).finally(() => {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n localStorage.removeItem('firebase-token');\n this.setState({desktopAlerts: false, firebaseToken: null});\n // Inform the server that the token was deleted.\n this.tinode.setDeviceToken(null);\n });\n } else {\n this.setState({desktopAlerts: false, firebaseToken: null});\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n }\n }\n\n handleToggleMessageSounds(enabled) {\n this.setState({messageSounds: enabled});\n LocalStorageUtil.updateObject('settings', {\n messageSoundsOff: !enabled\n });\n }\n\n handleCredAdd(method, value) {\n const me = this.tinode.getMeTopic();\n me.setMeta({cred: {meth: method, val: value}}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleCredDelete(method, value) {\n const me = this.tinode.getMeTopic();\n me.delCredential(method, value).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleCredConfirm(method, response) {\n this.handleCredentialsRequest({cred: [method]});\n }\n\n // User clicked Cancel button in Setting or Sign Up panel.\n handleSidepanelCancel() {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n let path = '';\n if (['security','support','general','notif'].includes(parsed.path[0])) {\n path = 'edit';\n } else if ('crop' == parsed.path[0]) {\n path = 'general';\n } else if ('blocked' == parsed.path[0]) {\n path = 'security';\n } else if (this.state.myUserId) {\n path = 'contacts';\n }\n parsed.path[0] = path;\n if (parsed.params) {\n delete parsed.params.code;\n delete parsed.params.method;\n delete parsed.params.tab;\n delete parsed.params.scheme;\n delete parsed.params.token;\n }\n HashNavigation.navigateTo(HashNavigation.composeUrlHash(parsed.path, parsed.params));\n this.setState({errorText: '', errorLevel: null});\n }\n\n // Sidepanel navigator. No need to bind to 'this'.\n basicNavigator(hash) {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, hash));\n }\n\n // Topic info navigator. No need to bind to 'this'.\n infoNavigator(hash) {\n HashNavigation.navigateTo(HashNavigation.setUrlInfoPanel(window.location.hash, hash));\n }\n\n // Request to start a topic, new or selected from search results, or \"by ID\".\n handleStartTopicRequest(topicName, newTopicParams, isChannel) {\n // Check if topic is indeed new. If not, launch it.\n if (topicName && this.tinode.isTopicCached(topicName)) {\n this.handleTopicSelected(topicName);\n return;\n }\n\n const params = {};\n if (Tinode.isP2PTopicName(topicName)) {\n // Because we are initialing the subscription, set 'want' to all permissions.\n params.sub = {mode: DEFAULT_P2P_ACCESS_MODE};\n // Give the other user all permissions too.\n params.desc = {defacs: {auth: DEFAULT_P2P_ACCESS_MODE}};\n } else {\n topicName = topicName || this.tinode.newGroupTopicName(isChannel);\n if (newTopicParams) {\n params.desc = {public: newTopicParams.public, private: {comment: newTopicParams.private}};\n params.tags = newTopicParams.tags;\n }\n }\n params._topicName = topicName;\n this.setState({newTopicParams: params}, () => {this.handleTopicSelected(topicName)});\n }\n\n // New topic was created, here is the new topic name.\n handleNewTopicCreated(oldName, newName) {\n if (this.state.topicSelected == oldName && oldName != newName) {\n // If the current URl contains the old topic name, replace it with new.\n // Update the name of the selected topic first so the navigator doen't clear\n // the state.\n this.setState({topicSelected: newName}, () => {\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', newName));\n });\n }\n }\n\n handleTopicUpdateRequest(topicName, pub, priv, defacs) {\n this.handleError();\n\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n const params = {};\n let attachments;\n if (pub) {\n if (pub.photo) {\n if (pub.photo.ref && pub.photo.ref != Tinode.DEL_CHAR) {\n attachments = [pub.photo.ref];\n } else if (!pub.photo.data || pub.photo.data == Tinode.DEL_CHAR) {\n pub.photo = Tinode.DEL_CHAR;\n }\n }\n params.public = pub;\n }\n\n if (typeof priv == 'string') {\n params.private = (priv === Tinode.DEL_CHAR) ?\n Tinode.DEL_CHAR : {comment: priv};\n }\n if (defacs) {\n params.defacs = defacs;\n }\n topic.setMeta({desc: params, attachments: attachments}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleUnarchive(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n topic.archive(false);\n }\n }\n\n handleUpdatePasswordRequest(password) {\n this.handleError();\n\n if (password) {\n this.tinode.updateAccountBasic(null, this.tinode.getCurrentLogin(), password).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleChangePermissions(topicName, mode, uid) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n const am = topic.getAccessMode();\n if (uid) {\n am.updateGiven(mode);\n mode = am.getGiven();\n } else {\n am.updateWant(mode);\n mode = am.getWant();\n }\n topic.setMeta({sub: {user: uid, mode: mode}}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleTagsUpdateRequest(topicName, tags) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n topic.setMeta({tags: tags}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleLogout() {\n updateFavicon(0);\n\n // Remove stored data.\n localStorage.removeItem('auth-token');\n localStorage.removeItem('firebase-token');\n localStorage.removeItem('settings');\n if (this.state.firebaseToken) {\n firebaseDelToken(this.fcm);\n }\n\n clearInterval(this.reconnectCountdown);\n\n let cleared;\n if (this.tinode) {\n cleared = this.tinode.clearStorage();\n this.tinode.onDisconnect = undefined;\n this.tinode.disconnect();\n } else {\n cleared = Promose.resolve();\n }\n this.setState(this.getBlankState());\n\n cleared.then(() => {\n this.tinode = TinodeWeb.tnSetup(this.state.serverAddress,\n this.state.transport, this.props.intl.locale, LocalStorageUtil.getObject('keep-logged-in'), () => {\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n HashNavigation.navigateTo('');\n })\n });\n }\n\n handleDeleteAccount() {\n this.tinode.delCurrentUser(true).then((ctrl) => {\n this.handleLogout();\n });\n }\n\n handleDeleteTopicRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Request to hard-delete topic.\n topic.delTopic(true).then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleDeleteMessagesRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Request hard-delete all messages.\n topic.delMessagesAll(true).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleLeaveUnsubRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n topic.leave(true).then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleBlockTopicRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n topic.updateMode(null, '-JP').then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleReportTopic(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Publish spam report.\n this.tinode.report('report',topicName);\n\n // Remove J and P permissions.\n topic.updateMode(null, '-JP').then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleShowContextMenu(params, menuItems) {\n this.setState({\n contextMenuVisible: true,\n contextMenuClickAt: {x: params.x, y: params.y},\n contextMenuParams: params,\n contextMenuItems: menuItems || this.defaultTopicContextMenu(params.topicName),\n contextMenuBounds: this.selfRef.current.getBoundingClientRect()\n });\n }\n\n //\n handleShowForwardDialog(params) {\n if (this.state.sidePanelSelected == 'newtpk') {\n // If the Find panel is active, close it.\n this.handleSidepanelCancel();\n }\n const header = '➦ ' + params.userName;\n const content = typeof params.content == 'string' ? Drafty.init(params.content) : Drafty.forwardedContent(params.content);\n const preview = Drafty.preview(content, FORWARDED_PREVIEW_LENGTH, true);\n const msg = Drafty.append(Drafty.appendLineBreak(Drafty.mention(header, params.userFrom)), content);\n const msgPreview = Drafty.quote(header, params.userFrom, preview);\n\n const head = {\n forwarded: params.topicName + ':' + params.seq\n };\n this.setState({\n forwardDialogVisible: true,\n forwardMessage: { head: head, msg: msg, preview: msgPreview }\n });\n }\n\n defaultTopicContextMenu(topicName) {\n const topic = this.tinode.getTopic(topicName);\n\n let muted = false, blocked = false, self_blocked = false, subscribed = false, deleter = false, archived = false;\n if (topic) {\n subscribed = topic.isSubscribed();\n archived = topic.isArchived();\n\n const acs = topic.getAccessMode();\n if (acs) {\n muted = acs.isMuted();\n blocked = !acs.isJoiner();\n self_blocked = !acs.isJoiner('want');\n deleter = acs.isDeleter();\n }\n }\n\n return [\n subscribed ? {\n title: this.props.intl.formatMessage(messages.menu_item_info),\n handler: this.handleShowInfoView\n } : null,\n subscribed ? 'messages_clear' : null,\n subscribed && deleter ? 'messages_clear_hard' : null,\n muted ? (blocked ? null : 'topic_unmute') : 'topic_mute',\n self_blocked ? 'topic_unblock' : 'topic_block',\n archived ? 'topic_restore' : 'topic_archive',\n 'topic_delete'\n ];\n }\n\n handleHideContextMenu() {\n this.setState({\n contextMenuVisible: false,\n contextMenuClickAt: null,\n contextMenuParams: null,\n contextMenuBounds: null\n });\n }\n\n handleHideForwardDialog(keepForwardedMessage) {\n this.setState({\n forwardDialogVisible: false,\n forwardMessage: keepForwardedMessage ? this.state.forwardMessage : null\n });\n }\n\n handleContextMenuAction(action, promise, params) {\n if (action == 'topic_archive') {\n if (promise && params.topicName && params.topicName == this.state.topicSelected) {\n promise.then(() => {\n this.handleTopicSelected(null);\n });\n }\n } else if (action == 'menu_item_forward') {\n this.handleShowForwardDialog(params);\n }\n }\n\n handleShowAlert(title, content, onConfirm, confirmText, onReject, rejectText) {\n this.setState({\n alertVisible: true,\n alertParams: {\n title: title,\n content: content,\n onConfirm: onConfirm,\n confirm: confirmText,\n onReject: onReject,\n reject: rejectText\n }\n });\n }\n\n handleShowInfoView() {\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'info', 'info'));\n this.setState({infoPanel: 'info'});\n }\n\n handleMemberUpdateRequest(topicName, added, removed) {\n if (!topicName) {\n return;\n }\n\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n if (added && added.length > 0) {\n added.map((uid) => {\n topic.invite(uid, null).catch((err) => {\n this.handleError(err.message, 'err');\n });\n });\n }\n\n if (removed && removed.length > 0) {\n removed.map((uid) => {\n topic.delSubscription(uid).catch((err) => {\n this.handleError(err.message, 'err');\n });\n });\n }\n }\n\n handleValidateCredentialsRequest(cred, code) {\n if (this.tinode.isAuthenticated()) {\n const me = this.tinode.getMeTopic();\n me.setMeta({cred: {meth: cred, resp: code}})\n .then(() => {\n HashNavigation.navigateTo('');\n })\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n } else {\n this.setState({credMethod: cred, credCode: code});\n this.doLogin(null, null, {meth: cred, resp: code});\n }\n }\n\n handlePasswordResetRequest(method, value) {\n // If already connected, connnect() will return a resolved promise.\n return this.tinode.connect()\n .then(() => {\n return this.tinode.requestResetAuthSecret('basic', method, value);\n })\n .catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n\n handleResetPassword(scheme, newPassword, token) {\n token = base64ReEncode(token);\n if (!token) {\n this.handleError(this.props.intl.formatMessage(messages.invalid_security_token), 'err');\n } else {\n this.tinode.connect()\n .then(() => {\n return this.tinode.updateAccountBasic(null, null, newPassword, {token: token});\n })\n .then(() => {\n HashNavigation.navigateTo('');\n })\n .catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n }\n\n render() {\n return (\n
    \n {this.state.contextMenuVisible ?\n {\n if (topicName == this.state.topicSelected) {\n this.handleTopicSelected(null);\n }\n }}\n onError={this.handleError} />\n :\n null\n }\n {this.state.forwardDialogVisible ?\n \n :\n null\n }\n { this.setState({alertVisible: false}); }) : null}\n reject={this.state.alertParams.reject}\n onConfirm={() => { this.setState({alertVisible: false}); this.state.alertParams.onConfirm(); }}\n confirm={this.state.alertParams.confirm}\n />\n \n\n \n\n {this.state.infoPanel ?\n \n :\n null\n }\n
    \n );\n }\n};\n\nexport default injectIntl(TinodeWeb);\n","// ValidationView: panel for confirming credentials, like email or phone.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n phone: {\n id: 'phone_dative',\n defaultMessage: 'phone',\n description: \"Dative case of 'phone', i.e. 'phone' in 'by phone'\",\n },\n email: {\n id: 'email_dative',\n defaultMessage: 'email',\n description: \"Dative case of 'email', i.e. 'email' in 'by email'\",\n }\n});\n\nclass ValidationView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n code: props.credCode || ''\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n handleChange(e) {\n this.setState({code: e.target.value});\n }\n\n handleKeyPress(e) {\n if (e.key === 'Enter') {\n this.handleSubmit(e);\n } else if (e.key == 'Escape') {\n this.handleCancel(e);\n }\n }\n\n handleSubmit(e) {\n e.preventDefault();\n if (this.state.code && this.state.code.trim()) {\n this.props.onSubmit(this.props.credMethod, this.state.code.trim());\n }\n }\n\n handleCancel(e) {\n e.preventDefault();\n this.props.onCancel();\n }\n\n\n render() {\n const { formatMessage } = this.props.intl;\n const methods = {'email': formatMessage(messages.email), 'tel': formatMessage(messages.phone)};\n let method = methods[this.props.credMethod] || this.props.credMethod;\n return (\n
    \n
    \n \n
    \n
    \n {\n (numbers_only) => \n }\n
    \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(ValidationView);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Alert extends React.PureComponent {\n render() {\n return this.props.visible ?\n
    \n
    \n
    {this.props.title}
    \n
    {this.props.content}
    \n
    \n {this.props.onReject ?\n \n :\n null\n }\n \n
    \n
    \n
    \n :\n null;\n }\n};\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\nimport { bytesToHumanSize } from '../lib/strformat.js';\nimport { isUrlRelative, sanitizeUrl } from '../lib/utils.js';\n\nexport default class Attachment extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n downloader: null,\n progress: 0\n };\n\n this.downloadFile = this.downloadFile.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n downloadFile(url, filename, mimetype) {\n if (!url) {\n this.props.onError(\"Invalid download URL '\" + url + \"'\");\n return;\n }\n\n const downloader = this.props.tinode.getLargeFileHelper();\n this.setState({downloader: downloader});\n downloader.download(url, filename, mimetype,\n (loaded) => {\n this.setState({progress: loaded / this.props.size});\n },\n (err) => {\n this.props.onError(err, 'err');\n }\n ).then(() => {\n this.setState({downloader: null, progress: 0});\n }).catch((err) => {\n if (err) {\n this.props.onError(\"Error downloading file: \" + err.message, 'err');\n }\n this.setState({downloader: null, progress: 0});\n });\n }\n\n handleCancel() {\n if (this.props.uploading) {\n this.props.onCancelUpload();\n } else if (this.state.downloader) {\n this.state.downloader.cancel();\n }\n }\n\n render() {\n let filename = this.props.filename || 'file_attachment';\n if (filename.length > 36) {\n filename = filename.substr(0, 16) + '...' + filename.substr(-16);\n }\n let size = this.props.size > 0 ?\n ({bytesToHumanSize(this.props.size)}) :\n null;\n\n // Detect if the download URL is relative or absolute.\n // If the URL is relative use LargeFileHelper to attach authentication\n // credentials to the request.\n let url, helperFunc;\n if (!this.props.uploading && !this.state.downloader && isUrlRelative(this.props.downloadUrl)) {\n // Relative URL. Use download helper.\n url = '#';\n helperFunc = (e) => {\n e.preventDefault();\n this.downloadFile(this.props.downloadUrl, this.props.filename, this.props.mimetype);\n };\n } else {\n url = sanitizeUrl(this.props.downloadUrl);\n helperFunc = null;\n }\n const downloadWidget = <>file_download ;\n return (\n
    \n
    insert_drive_file
    \n
    \n
    {filename} {size}
    \n {this.props.uploading || this.state.downloader ?\n \n :\n
    {url ?\n {downloadWidget}\n :\n {downloadWidget}\n }
    \n }\n
    \n
    \n );\n }\n};\n","// Audio recorder widget.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { secondsToTime } from '../lib/strformat';\nimport { base64ToIntArray } from '../lib/blob-helpers';\n\n// Make canvas bigger than the element size to reduce blurring.\nconst CANVAS_UPSCALING = 2.0;\n// Thickness of a visualization bar.\nconst LINE_WIDTH = 3 * CANVAS_UPSCALING;\n// Spacing between two visualization bars.\nconst SPACING = 2 * CANVAS_UPSCALING;\n// Color of histogram bars.\nconst BAR_COLOR = '#bbb';\nconst BAR_COLOR_DARK = '#888';\nconst THUMB_COLOR = '#666';\n// Minimum number of amplitude bars to draw.\nconst MIN_PREVIEW_LENGTH = 16;\n\nexport default class AudioPlayer extends React.PureComponent {\n constructor(props) {\n super(props);\n\n let preview = base64ToIntArray(this.props.preview);\n if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n\n this.state = {\n canPlay: false,\n playing: false,\n currentTime: '0:00',\n duration: this.props.duration > 0 ? secondsToTime(this.props.duration / 1000) : '-:--',\n longMin: this.props.duration >= 600000,\n preview: preview\n };\n\n this.initAudio = this.initAudio.bind(this);\n this.initCanvas = this.initCanvas.bind(this);\n this.resampleBars = this.resampleBars.bind(this);\n this.visualize = this.visualize.bind(this);\n\n this.handlePlay = this.handlePlay.bind(this);\n this.handleSeek = this.handleSeek.bind(this);\n this.handleError = this.handleError.bind(this);\n\n this.audioPlayer = null;\n\n this.viewBuffer = [];\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.src) {\n this.initAudio();\n }\n\n if (this.state.preview) {\n this.initCanvas();\n }\n }\n\n componentWillUnmount() {\n if (this.audioPlayer) {\n this.audioPlayer.oncanplay = null;\n this.audioPlayer.ontimeupdate = null;\n this.audioPlayer.onended = null;\n this.audioPlayer.pause();\n this.audioPlayer = null;\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.src != prevProps.src) {\n this.initAudio();\n }\n\n if (this.props.preview != prevProps.preview) {\n let preview = base64ToIntArray(this.props.preview);\n if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n this.setState({preview: preview}, this.initCanvas);\n }\n }\n\n initAudio() {\n this.audioPlayer = new Audio(this.props.src);\n this.audioPlayer.oncanplay = _ => this.setState({canPlay: true});\n this.audioPlayer.ontimeupdate = _ => this.setState({\n currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)\n });\n this.audioPlayer.onended = _ => {\n this.audioPlayer.currentTime = 0;\n this.setState({playing: false, currentTime: secondsToTime(0, this.state.longMin)})\n }\n }\n\n initCanvas() {\n // Force canvas aspect ration to match one of the element + upscale canvas to reduce blurring.\n this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;\n this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;\n\n this.canvasContext = this.canvasRef.current.getContext('2d');\n this.canvasContext.lineCap = 'round';\n\n this.viewBuffer = this.resampleBars(this.state.preview);\n this.visualize();\n }\n\n // Draw amplitude of sound.\n visualize() {\n if (!this.canvasRef.current) {\n return;\n }\n\n const width = this.effectiveWidth;\n const height = this.canvasRef.current.height;\n\n this.canvasContext.lineWidth = LINE_WIDTH;\n\n const drawFrame = () => {\n if (!this.canvasRef.current) {\n // The component is unmounted.\n return;\n }\n\n this.canvasContext.clearRect(0, 0, this.canvasRef.current.width, height);\n\n if (this.viewBuffer) {\n if (this.state.playing) {\n window.requestAnimationFrame(drawFrame);\n }\n\n // Current pplayback position.\n const thumbAt = this.props.duration ?\n Math.max(0, Math.min(this.audioPlayer.currentTime * 1000 / this.props.duration, 1)) * (width - LINE_WIDTH * 2) : -1;\n\n // Draw amplitude bars.\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = BAR_COLOR_DARK;\n for (let i = 0; i < this.viewBuffer.length; i++) {\n let x = 1 + i * (LINE_WIDTH + SPACING) + LINE_WIDTH * 0.5;\n let y = this.viewBuffer[i] * height * 0.9;\n\n const color = x < thumbAt ? BAR_COLOR_DARK : BAR_COLOR;\n if (this.canvasContext.strokeStyle != color) {\n this.canvasContext.stroke();\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = color;\n }\n\n this.canvasContext.moveTo(x, (height - y) * 0.5);\n this.canvasContext.lineTo(x, height * 0.5 + y * 0.5);\n }\n // Actually draw the bars on canvas.\n this.canvasContext.stroke();\n\n // Draw thumb.\n if (this.props.duration) {\n this.canvasContext.beginPath();\n this.canvasContext.arc(thumbAt + LINE_WIDTH * 2, height * 0.5, LINE_WIDTH * 2, 0, 2 * Math.PI);\n this.canvasContext.fillStyle = THUMB_COLOR;\n this.canvasContext.fill();\n }\n }\n }\n\n drawFrame();\n }\n\n // Quick and dirty downsampling of the original preview bars into a smaller (or equal) number of bars we can display here.\n resampleBars(original) {\n const barCount = Math.min(original.length, ((this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING)) | 0);\n const factor = original.length / barCount;\n let amps = [];\n let max = -1;\n for (let i=0;i 0) {\n // Remove extra padding on the right due to fractional bar which is not drawn.\n this.effectiveWidth = barCount * (LINE_WIDTH + SPACING) + SPACING;\n return amps.map(a => a / max);\n }\n return null;\n }\n\n handlePlay(e) {\n e.preventDefault();\n if (!this.state.canPlay) {\n return;\n }\n if (this.state.playing) {\n this.audioPlayer.pause();\n this.setState({playing: false});\n } else {\n this.audioPlayer.play();\n this.setState({playing: true}, this.visualize);\n }\n }\n\n handleError(err) {\n console.log(err);\n }\n\n handleSeek(e) {\n e.preventDefault();\n if (e.target && this.props.duration) {\n const rect = e.target.getBoundingClientRect();\n const offset = (e.clientX - rect.left) / this.effectiveWidth * CANVAS_UPSCALING;\n this.audioPlayer.currentTime = this.props.duration * offset / 1000;\n this.setState({currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)});\n if (!this.state.playing && this.state.preview) {\n this.visualize();\n }\n }\n }\n\n render() {\n const playClass = 'material-icons' +\n (this.props.short ? '' : ' large') +\n (this.state.canPlay ? '' : ' disabled');\n const play = (\n {this.state.playing ? 'pause_circle' :\n (this.state.canPlay ? 'play_circle' : 'not_interested')}\n );\n return (
    {this.props.short ?\n <>\n
    \n {this.state.preview ?\n :\n
    -
    \n }\n
    \n {play}\n \n :\n <>\n {play}\n
    \n {this.state.preview ?\n :\n
    \n \n
    \n }\n
    {this.state.currentTime}/{this.state.duration}
    \n
    \n \n }\n
    );\n }\n}\n","// Audio recorder widget.\n\nimport React from 'react';\n\nimport AudioPlayer from './audio-player.jsx';\n\nimport { intArrayToBase64 } from '../lib/blob-helpers.js'\nimport { secondsToTime } from '../lib/strformat';\n\n// FFT resolution.\nconst BUFFER_SIZE = 256;\n// Make canvas bigger than the element size to reduce blurring.\nconst CANVAS_UPSCALING = 2.0;\n// Thickness of a visualization bar.\nconst LINE_WIDTH = 3 * CANVAS_UPSCALING;\n// Spacing between two visualization bars.\nconst SPACING = 2 * CANVAS_UPSCALING;\n// Duration represented by one visualization bar.\nconst MILLIS_PER_BAR = 100;\n// Color of histogram bars\nconst BAR_COLOR = '#bbb';\n// Vertical scaling for visualization bars.\nconst BAR_SCALE = 64.0;\n// Minimum duration of a recording in milliseconds.\nconst MIN_DURATION = 200;\n// Maximum duration of a recording in milliseconds (10 min).\nconst MAX_DURATION = 600000;\n// Number of bars in preview.\nconst VISUALIZATION_BARS = 96;\n// Maximum number of samples per bar.\nconst MAX_SAMPLES_PER_BAR = 10;\n\nexport default class AudioRecorder extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n enabled: true,\n audioRecord: null,\n recording: true,\n paused: false,\n duration: '0:00',\n blobUrl: null,\n preview: null\n };\n\n this.visualize = this.visualize.bind(this);\n this.initMediaRecording = this.initMediaRecording.bind(this);\n this.initCanvas = this.initCanvas.bind(this);\n this.getRecording = this.getRecording.bind(this);\n this.cleanUp = this.cleanUp.bind(this);\n\n this.handleResume = this.handleResume.bind(this);\n this.handlePause = this.handlePause.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDone = this.handleDone.bind(this);\n\n this.durationMillis = 0;\n this.startedOn = null;\n this.viewBuffer = [];\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n this.stream = null;\n this.mediaRecorder = null;\n this.audioContext = null;\n this.audioInput = null;\n this.analyser = null;\n\n this.audioChunks = [];\n\n // Start recorder right away.\n try {\n navigator.mediaDevices.getUserMedia({audio: true, video: false}).then(this.initMediaRecording, this.props.onError);\n } catch (err) {\n this.props.onError(err);\n }\n }\n\n componentWillUnmount() {\n this.startedOn = null;\n if (this.stream) {\n this.cleanUp();\n }\n }\n\n // Draw amplitude of sound.\n visualize() {\n this.initCanvas();\n\n const pcmData = new Uint8Array(this.analyser.frequencyBinCount);\n const width = this.canvasWidth;\n const height = this.canvasHeight;\n // Number of bars.\n const viewLength = (width / (LINE_WIDTH + SPACING)) | 0;\n // Duration of audio which fits onto the screen.\n const viewDuration = MILLIS_PER_BAR * viewLength;\n\n this.canvasContext.lineWidth = LINE_WIDTH;\n this.canvasContext.strokeStyle = BAR_COLOR;\n\n let prevBarCount = 0;\n let volume = 0.0;\n let countPerBar = 0;\n const drawFrame = () => {\n if (!this.startedOn) {\n return;\n }\n window.requestAnimationFrame(drawFrame);\n\n const duration = this.durationMillis + (Date.now() - this.startedOn);\n // Update record length timer.\n this.setState({duration: secondsToTime(duration / 1000)});\n\n // Check if record is too long.\n if (duration > MAX_DURATION) {\n this.startedOn = null;\n this.mediaRecorder.pause();\n this.durationMillis += Date.now() - this.startedOn;\n this.setState({enabled: false, recording: false, duration: secondsToTime(this.durationMillis / 1000)});\n }\n\n // Draw histogram.\n\n // Get current waveform and calculate its amplitude.\n this.analyser.getByteTimeDomainData(pcmData);\n let amp = 0.0;\n for (const amplitude of pcmData) {\n amp += (amplitude - 127) ** 2;\n }\n\n // Sum the amplitude.\n volume += Math.sqrt(amp/pcmData.length);\n countPerBar ++;\n\n let barCount = (duration / MILLIS_PER_BAR) | 0;\n // Shift of the histogram along x-axis to make scrolling smooth. No need to shift if recording is too short.\n const dx = viewDuration > duration ? 0 :\n (duration - MILLIS_PER_BAR * barCount) / MILLIS_PER_BAR * (LINE_WIDTH + SPACING);\n\n if (prevBarCount != barCount) {\n prevBarCount = barCount;\n // Add new amplitude visualization bar.\n this.viewBuffer.push(volume/countPerBar);\n volume = 0.0;\n countPerBar = 0;\n if (this.viewBuffer.length > viewLength) {\n // Keep at most 'viewLength' amplitude bars.\n this.viewBuffer.shift();\n }\n }\n\n // Clear canvas.\n this.canvasContext.clearRect(0, 0, width, height);\n\n // Draw amplitude bars.\n this.canvasContext.beginPath();\n for (let i = 0; i < this.viewBuffer.length; i++) {\n let x = i * (LINE_WIDTH + SPACING) - dx;\n let y = Math.min(this.viewBuffer[i] / BAR_SCALE, 0.9) * height;\n\n this.canvasContext.moveTo(x, (height - y) * 0.5);\n this.canvasContext.lineTo(x, height * 0.5 + y * 0.5);\n }\n // Actually draw the bars on canvas.\n this.canvasContext.stroke();\n }\n\n drawFrame();\n }\n\n handlePause(e) {\n e.preventDefault();\n this.mediaRecorder.pause();\n this.mediaRecorder.requestData();\n this.durationMillis += Date.now() - this.startedOn;\n this.startedOn = null;\n this.setState({recording: false});\n }\n\n handleResume(e) {\n e.preventDefault();\n if (this.state.enabled) {\n this.startedOn = Date.now();\n this.mediaRecorder.resume();\n this.setState({recording: true}, this.visualize);\n }\n }\n\n handleDelete(e) {\n e.preventDefault();\n this.durationMillis = 0;\n this.startedOn = null;\n this.mediaRecorder.stop();\n this.cleanUp();\n this.setState({recording: false});\n }\n\n handleDone(e) {\n e.preventDefault();\n this.setState({recording: false});\n if (this.startedOn) {\n this.durationMillis += Date.now() - this.startedOn;\n this.startedOn = null;\n }\n // Stop recording and return data.\n if (this.mediaRecorder) {\n this.mediaRecorder.stop();\n }\n }\n\n initCanvas() {\n this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;\n this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;\n\n this.canvasContext = this.canvasRef.current.getContext('2d');\n this.canvasContext.lineCap = 'round';\n // To reduce line blurring.\n this.canvasContext.translate(0.5, 0.5);\n this.canvasWidth = this.canvasRef.current.width;\n this.canvasHeight = this.canvasRef.current.height;\n }\n\n initMediaRecording(stream) {\n this.stream = stream;\n this.mediaRecorder = new MediaRecorder(stream);\n\n // The following code is needed for visualization.\n this.audioContext = new AudioContext();\n this.audioInput = this.audioContext.createMediaStreamSource(stream);\n this.analyser = this.audioContext.createAnalyser();\n this.analyser.fftSize = BUFFER_SIZE;\n this.audioInput.connect(this.analyser);\n\n this.mediaRecorder.onstop = _ => {\n if (this.durationMillis > MIN_DURATION) {\n this.getRecording()\n .then(result => this.props.onFinished(result.url, result.preview, this.durationMillis));\n } else {\n this.props.onDeleted();\n }\n this.cleanUp();\n }\n\n this.mediaRecorder.ondataavailable = (e) => {\n if (e.data.size > 0) {\n this.audioChunks.push(e.data);\n }\n\n if (this.mediaRecorder.state != 'inactive') {\n this.getRecording().then(result => {\n this.setState({\n blobUrl: result.url,\n preview: result.preview\n });\n });\n }\n }\n\n this.durationMillis = 0;\n this.startedOn = Date.now();\n this.mediaRecorder.start();\n this.visualize();\n }\n\n // Obtain data in a form sutable for sending or playing back.\n getRecording() {\n const blob = new Blob(this.audioChunks, {'type' : 'audio/mp3; codecs=mp3'});\n const url = window.URL.createObjectURL(blob);\n return blob.arrayBuffer().then(ab => this.audioContext.decodeAudioData(ab))\n .then(data => this.createPreview(data))\n .then(preview => {\n return {url: url, preview: intArrayToBase64(preview)}\n });\n }\n\n // Preview must be calculated at the source: Chrome does not allow background AudioContext.\n createPreview(audio) {\n const data = audio.getChannelData(0);\n // Number of amplitude bars in preview.\n const viewLength = Math.min(data.length, VISUALIZATION_BARS);\n // The number of samples in each bar.\n const totalSPB = (data.length / viewLength) | 0;\n // Distance between samples: we are going to take just a fracton of samples.\n const samplingRate = Math.max(1, (totalSPB / MAX_SAMPLES_PER_BAR) | 0);\n\n let buffer = [];\n let max = -1;\n for (let i = 0; i < viewLength; i++) {\n let amplitude = 0;\n let count = 0;\n for (let j = 0; j < totalSPB; j += samplingRate) {\n amplitude += data[totalSPB * i + j] ** 2;\n count ++;\n }\n const val = Math.sqrt(amplitude / count);\n buffer.push(val);\n max = Math.max(max, val);\n }\n // Normalize amplitude to 0..100.\n if (max > 0) {\n buffer = buffer.map(a => (100 * a / max) | 0);\n }\n return buffer;\n }\n\n cleanUp() {\n this.audioInput.disconnect();\n this.stream.getTracks().forEach(track => track.stop());\n }\n\n render() {\n const resumeClass = 'material-icons ' + (this.state.enabled ? 'red' : 'gray');\n return (\n
    \n \n delete_outline\n \n {this.state.recording ?\n \n :\n \n }\n
    {this.state.duration}
    \n {this.state.recording ?\n \n pause_circle_outline\n :\n \n radio_button_checked\n \n }\n \n send\n \n
    \n );\n }\n}\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport Cropper from './cropper.jsx';\nimport { imageCrop } from '../lib/blob-helpers.js';\n\nexport default class AvatarCrop extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n scale: 1\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n // Cut out in image coordinates and desired scale factor.\n handleChange(left, top, width, height, scale) {\n this.setState({\n left: left,\n top: top,\n width: width,\n height: height,\n scale: scale\n });\n }\n\n handleSubmit() {\n imageCrop(this.props.mime, this.props.avatar,\n this.state.left, this.state.top, this.state.width, this.state.height,\n this.state.scale)\n .then(img => {\n this.props.onSubmit(img.mime, img.blob, img.width, img.height);\n })\n .catch(err => {\n this.props.onError(err);\n });\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n {this.props.onCancel ?\n \n : null}\n \n
    \n
    \n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
    \n {this.props.readOnly || !this.state.source ?\n null :\n {e.preventDefault(); this.props.onImageUpdated();}}>\n clear\n }\n {this.state.source ?\n :\n this.props.readOnly && this.props.uid ?\n
    \n \n
    \n :\n
    {AVATAR_SIZE}×{AVATAR_SIZE}
    }\n {this.props.readOnly ? null :\n }\n {this.props.readOnly ? null :\n }\n \n
    \n );\n }\n};\n","import React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst icon_mapping = {'staff': 'verified_user'};\n\nconst messages = defineMessages({\n badge_verified: {\n id: 'badge_verified',\n defaultMessage: 'Verified/official',\n description: 'Explanation of a verified account or topic badge'\n },\n badge_staff: {\n id: 'badge_staff',\n defaultMessage: 'Staff-managed',\n description: 'Explanation of a staff-managed account or topic badge'\n },\n badge_danger: {\n id: 'badge_danger',\n defaultMessage: 'Untrustworthy',\n description: 'Suspicious or untrustworthy account or topic badge'\n },\n});\n\n\n/* Trusted badges with labels: verified, staff, danger */\nclass BadgeList extends React.PureComponent {\n render() {\n const {formatMessage} = this.props.intl;\n let badges = null;\n if (this.props.trustedBadges && this.props.trustedBadges.length > 0) {\n badges = [];\n this.props.trustedBadges.map((b) => {\n const comment = formatMessage(messages['badge_' + b]);\n const style = 'material-icons ' + b + '-color';\n badges.push(
    {icon_mapping[b] || b} {comment}
    );\n });\n return <>{badges};\n }\n return null;\n }\n};\n\nexport default injectIntl(BadgeList);\n","// The <- button to be displayed in title bars.\nimport React from 'react';\n\nexport default class ButtonBack extends React.PureComponent {\n render() {\n return (\n {e.preventDefault(); this.props.onBack();}}>\n arrow_back\n \n );\n }\n}\n","// Single chat message bubble, sent or received.\n\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Attachment from './attachment.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport ReceivedMarker from './received-marker.jsx'\n\nimport { fullFormatter } from '../lib/formatters.js';\nimport { sanitizeUrl } from '../lib/utils.js';\n\nclass BaseChatMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n progress: 0\n };\n\n if (props.uploader) {\n props.uploader.onProgress = this.handleProgress.bind(this);\n }\n\n this.handleImagePreview = this.handleImagePreview.bind(this);\n this.handleFormButtonClick = this.handleFormButtonClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n\n this.formatterContext = {\n formatMessage: props.intl.formatMessage.bind(props.intl),\n viewportWidth: props.viewportWidth,\n authorizeURL: props.tinode.authorizeURL.bind(props.tinode),\n onImagePreview: this.handleImagePreview,\n onFormButtonClick: this.handleFormButtonClick,\n onQuoteClick: this.handleQuoteClick\n };\n }\n\n handleImagePreview(e) {\n e.preventDefault();\n this.props.onImagePreview({\n url: e.target.src,\n filename: e.target.title,\n width: e.target.dataset.width,\n height: e.target.dataset.height,\n size: e.target.dataset.size,\n type: e.target.dataset.mime\n });\n }\n\n handleFormButtonClick(e) {\n e.preventDefault();\n const data = {\n seq: this.props.seq\n };\n data.resp = {};\n if (e.target.dataset.name) {\n data.resp[e.target.dataset.name] = e.target.dataset.val ? e.target.dataset.val :\n e.target.dataset.val === undefined ? 1 : '' + e.target.dataset.val;\n }\n if (e.target.dataset.act == 'url') {\n data.ref = sanitizeUrl(e.target.dataset.ref) || 'about:blank';\n }\n const text = e.target.dataset.title || 'unknown';\n this.props.onFormResponse(e.target.dataset.act, text, data);\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const menuItems = [];\n if (this.props.received == Tinode.MESSAGE_STATUS_FAILED) {\n menuItems.push('menu_item_send_retry');\n }\n if (this.props.userIsWriter &&\n this.props.received > Tinode.MESSAGE_STATUS_FAILED &&\n this.props.received < Tinode.MESSAGE_STATUS_DEL_RANGE) {\n menuItems.push('menu_item_reply');\n }\n menuItems.push('menu_item_forward');\n\n this.props.showContextMenu({\n seq: this.props.seq,\n content: this.props.content,\n userFrom: this.props.userFrom,\n userName: this.props.userName,\n y: e.pageY,\n x: e.pageX,\n pickReply: this.props.pickReply\n }, menuItems);\n }\n\n handleProgress(ratio) {\n this.setState({progress: ratio});\n }\n\n handleCancelUpload() {\n this.props.onCancelUpload(this.props.seq, this.props.uploader);\n }\n\n handleQuoteClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const replyToSeq = this.props.replyToSeq;\n if (replyToSeq) {\n this.props.onQuoteClick(replyToSeq);\n }\n }\n\n render() {\n const sideClass = this.props.sequence + ' ' + (this.props.response ? 'left' : 'right');\n const bubbleClass = (this.props.sequence == 'single' || this.props.sequence == 'last') ? 'bubble tip' : 'bubble';\n const avatar = this.props.userAvatar || true;\n const fullDisplay = (this.props.isGroup && this.props.response &&\n (this.props.sequence == 'single' || this.props.sequence == 'last'));\n\n let content = this.props.content;\n const attachments = [];\n if (this.props.mimeType == Drafty.getContentType() && Drafty.isValid(content)) {\n Drafty.attachments(content, (att, i) => {\n if (att.mime == 'application/json') {\n // Don't show json objects as attachments.\n // They are not meant for users.\n return;\n }\n attachments.push();\n }, this);\n const tree = Drafty.format(content, fullFormatter, this.formatterContext);\n content = React.createElement(React.Fragment, null, tree);\n } else if (typeof content != 'string') {\n content = <>warning_amber \n \n }\n\n return (\n
  • \n {this.props.isGroup && this.props.response ?\n
    \n {fullDisplay ?\n :\n null}\n
    :\n null}\n
    \n
    \n
    \n
    \n {content}\n {attachments}\n
    \n {this.props.timestamp ?\n \n : null}\n
    \n {this.props.showContextMenu ?\n \n \n expand_more\n \n : null\n }\n
    \n {fullDisplay ?\n
    \n {this.props.userName ||\n \n }\n
    \n : null\n }\n
    \n
  • \n );\n }\n};\n\nconst IntlChatMessage = injectIntl(BaseChatMessage);\nconst ChatMessage = React.forwardRef((props, ref) => );\n\nexport default ChatMessage;\n","import React from 'react';\n\n/* BEGIN CheckBox: styled checkbox */\nexport default class CheckBox extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange() {\n this.props.onChange(this.props.name, !this.props.checked);\n }\n\n render() {\n return (\n this.props.onChange ? (\n this.props.checked === true ?\n check_box :\n this.props.checked === false ?\n check_box_outline_blank :\n indeterminate_check_box\n ) : (\n this.props.checked ?\n check_box :\n check_box_outline_blank\n )\n );\n }\n}\n/* END CheckBox */\n","import React from 'react';\n\nimport Chip from './chip.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\n/* BEGIN ChipInput: group membership widget */\nexport default class ChipInput extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = ChipInput.deriveStateFromProps(props);\n this.state.input = '';\n this.state.focused = false;\n\n this.handleTextInput = this.handleTextInput.bind(this);\n this.removeChipAt = this.removeChipAt.bind(this);\n this.handleChipCancel = this.handleChipCancel.bind(this);\n this.handleFocusGained = this.handleFocusGained.bind(this);\n this.handleFocusLost = this.handleFocusLost.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n static deriveStateFromProps(props) {\n return {\n placeholder: props.chips ? '' : props.prompt,\n sortedChips: ChipInput.sortChips(props.chips, props.staticMembers),\n chipIndex: ChipInput.indexChips(props.chips)\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.chips != this.props.chips ||\n prevProps.staticMembers != this.props.staticMembers ||\n prevProps.prompt != this.props.prompt) {\n this.setState(ChipInput.deriveStateFromProps(this.props));\n }\n if (!prevState || this.props.chips.length > prevState.sortedChips.length) {\n this.setState({input: ''});\n }\n }\n\n // Map chip index to user name\n static indexChips(chips) {\n const index = {};\n let count = 0;\n chips.map((item) => {\n index[item.user] = count;\n count ++;\n });\n return index;\n }\n\n // Have non-removable chips appear before all other chips.\n static sortChips(chips, keep) {\n const required = [];\n const normal = [];\n chips.map((item) => {\n if (keep && keep.includes(item.user)) {\n required.push(item);\n } else {\n normal.push(item);\n }\n });\n return required.concat(normal);\n }\n\n handleTextInput(e) {\n this.setState({input: e.target.value});\n if (this.props.filterFunc) {\n this.props.filterFunc(e.target.value);\n }\n }\n\n removeChipAt(idx) {\n const removed = this.state.sortedChips[idx];\n this.props.onChipRemoved(removed.user, this.state.chipIndex[removed.user]);\n }\n\n handleChipCancel(item, idx) {\n this.removeChipAt(idx);\n }\n\n handleFocusGained() {\n this.setState({focused: true});\n }\n\n handleFocusLost() {\n this.setState({focused: false});\n if (this.props.onFocusLost) {\n this.props.onFocusLost(this.state.input);\n }\n }\n\n handleKeyDown(e) {\n if (e.key === 'Backspace') {\n if (this.state.input.length == 0 && this.state.sortedChips.length > 0) {\n const at = this.state.sortedChips.length - 1;\n if (this.state.sortedChips[at].user !== this.props.staticMembers) {\n this.removeChipAt(at);\n }\n }\n } else if (e.key === 'Enter') {\n if (this.props.onEnter) {\n this.props.onEnter(this.state.input);\n }\n } else if (e.key === 'Escape') {\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n }\n\n render() {\n const chips = [];\n let count = 0;\n const staticMembers = this.props.staticMembers || [];\n this.state.sortedChips.map((item) => {\n chips.push(\n \n );\n count++;\n });\n const className = \"chip-input\" + (this.state.focused ? ' focused' : '');\n const autoFocus = !(this.props.tabIndex > 0);\n return (\n
    \n {chips}\n \n
    \n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\n\nexport default class Chip extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n handleCancel(e) {\n e.preventDefault();\n this.props.onCancel(this.props.topic, this.props.index);\n }\n\n render() {\n const title = this.props.title || this.props.topic;\n const className = this.props.invalid ? 'chip invalid' : 'chip';\n return (\n
    \n {this.props.noAvatar ?\n :\n
    \n \n
    \n }\n {title}\n {this.props.onCancel && !this.props.required ?\n ×\n : }\n
    \n );\n }\n};\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
  • \n
    {formatMessage(this.props.title, this.props.values)}
    \n
  • \n );\n }\n};\n\nexport default injectIntl(ContactAction);\n","import React from 'react';\n\nconst icon_mapping = {'muted': 'notifications_off', 'banned': 'block', 'staff': 'verified_user'};\n\n/* Contact's labels: [you], or icons [muted], [blocked] */\nexport default class ContactBadges extends React.PureComponent {\n render() {\n let badges = null;\n if (this.props.badges && this.props.badges.length > 0) {\n badges = [];\n this.props.badges.map((b) => {\n const color = (b.color ? ' ' + b.color : '');\n if (b.icon) {\n badges.push({icon_mapping[b.icon] || b.icon});\n } else {\n badges.push({b.name});\n }\n });\n return <>{badges};\n }\n return null;\n }\n};\n","// ContactList: component for showing a list of contacts,\n// such as a list of group members in a group chat.\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Contact from './contact.jsx';\nimport ContactAction from './contact-action.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nimport { MESSAGE_PREVIEW_LENGTH } from '../config.js';\n\nconst messages = defineMessages({\n badge_you: {\n id: 'badge_you',\n defaultMessage: 'you',\n description: 'Badge for indicating the current user'\n },\n badge_owner: {\n id: 'badge_owner',\n defaultMessage: 'owner',\n description: 'Badge for indicating the owner'\n }\n});\n\nclass ContactList extends React.Component {\n render() {\n const { formatMessage } = this.props.intl;\n const showCheckmark = Array.isArray(this.props.topicSelected);\n const contactNodes = [];\n let contactsCount = 0;\n if (this.props.contacts && this.props.contacts.length > 0) {\n this.props.contacts.map((c) => {\n if (c.action) {\n // Action item\n contactNodes.push(\n );\n } else {\n // Normal contact\n const key = this.props.showMode ? c.user : (c.topic || c.user);\n // If filter function is provided, filter out the items\n // which don't satisfy the condition.\n if (this.props.filterFunc && this.props.filter) {\n const filterOn = [key];\n if (c.private && c.private.comment) {\n filterOn.push(('' + c.private.comment).toLowerCase());\n }\n if (c.public && c.public.fn) {\n filterOn.push(('' + c.public.fn).toLowerCase());\n }\n if (!this.props.filterFunc(this.props.filter, filterOn)) {\n return;\n }\n }\n\n const isChannel = Tinode.isChannelTopicName(key);\n const selected = showCheckmark ?\n (this.props.topicSelected.indexOf(key) > -1) :\n (this.props.topicSelected === key);\n const badges = [];\n if (this.props.showMode) {\n if (key == this.props.myUserId) {\n badges.push({name: formatMessage(messages.badge_you), color: 'green'});\n }\n if (c.acs && c.acs.isOwner()) {\n badges.push({name: formatMessage(messages.badge_owner), color: 'blue'});\n }\n }\n\n const comment = Array.isArray(c.private) ?\n c.private.join(',') : (c.private ? c.private.comment : null);\n let preview;\n let forwarded;\n let deliveryStatus;\n if (!this.props.showMode && c.latestMessage) {\n const msg = c.latestMessage(true);\n if (msg) {\n forwarded = msg.head ? msg.head.forwarded : null;\n deliveryStatus = msg._status || c.msgStatus(msg, true);\n if (msg.content) {\n preview = typeof msg.content == 'string' ?\n msg.content.substr(0, MESSAGE_PREVIEW_LENGTH) :\n Drafty.preview(msg.content, MESSAGE_PREVIEW_LENGTH);\n }\n }\n }\n\n contactNodes.push(\n \n );\n contactsCount ++;\n }\n }, this);\n }\n\n return (\n
    \n {contactsCount == 0 ?\n
    \n :\n null\n }\n {contactNodes.length > 0 ?\n
      \n {contactNodes}\n
    \n :\n null\n }\n
    \n );\n }\n};\n\nexport default injectIntl(ContactList);\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport ContactBadges from './contact-badges.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport UnreadBadge from './unread-badge.jsx';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport { previewFormatter } from '../lib/formatters.js';\nimport { deliveryMarker } from '../lib/utils.js';\n\nclass Contact extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onSelected) {\n // Index this.props.index is used by GroupManager.\n this.props.onSelected(this.props.item, this.props.index);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.props.item, y: e.pageY, x: e.pageX });\n }\n\n render() {\n let title = this.props.title;\n if (!title) {\n title = ;\n } else if (title.length > 30) {\n // FIXME: this is probably wrong for RTL languages.\n title = title.substring(0, 28) + '…';\n }\n const online = this.props.now ? 'online' : 'offline';\n const avatar = this.props.avatar ? this.props.avatar : true;\n const badges = this.props.badges ? this.props.badges.slice() : [];\n const icon_badges = [];\n if (this.props.isVerified) {\n icon_badges.push({icon: 'verified', color: 'verified-color'});\n }\n if (this.props.isStaff) {\n icon_badges.push({icon: 'staff', color: 'staff-color'});\n }\n if (this.props.isDangerous) {\n icon_badges.push({icon: 'dangerous', color: 'danger-color'});\n }\n if (this.props.acs) {\n if (this.props.showMode) {\n badges.push({name: this.props.acs.getMode(), key: 'mode'});\n }\n if (this.props.acs.isMuted()) {\n icon_badges.push({icon: 'muted'});\n }\n if (!this.props.acs.isJoiner()) {\n icon_badges.push({icon: 'banned'});\n }\n }\n\n // The this.props.preview contains alreay shortened Drafty or string.\n let preview;\n if (typeof this.props.preview == 'string') {\n preview = this.props.preview;\n } else if (Drafty.isValid(this.props.preview)) {\n preview = React.createElement(React.Fragment, null, Drafty.format(this.props.preview, previewFormatter,\n {formatMessage: this.props.intl.formatMessage}));\n } else if (this.props.preview) {\n preview =\n <>warning_amber \n \n ;\n }\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n const titleClass = 'contact-title' + (this.props.deleted ? ' deleted' : '');\n\n return (\n
  • \n
    \n \n {this.props.deleted ? cancel :\n this.props.showOnline ? :\n (this.props.showCheckmark && this.props.selected) ?\n check_circle\n : null}\n
    \n
    \n
    {title}\n {this.props.isChannel ? \"channel\" : null}\n \n {!this.props.deleted ? : null}\n
    \n {this.props.showMode ?\n :\n this.props.small ? null :
    {marker}{preview || this.props.comment || '\\u00A0'}
    }\n
    \n {this.props.showContextMenu ?\n \n \n expand_more\n \n : null}\n
  • \n );\n }\n};\n\nexport default injectIntl(Contact);\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n forward: {\n id: 'menu_item_forward',\n defaultMessage: 'Forward',\n description: 'Forward message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(message.delete_messages_warning), // content\n (() => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'menu_item_forward': {\n id: 'menu_item_forward',\n title: formatMessage(messages.forward),\n handler: () => {} /* the action is taken directly in tinode-web */\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.warn(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.error(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n params.pickReply(params.seq, params.content, params.userFrom, params.userName, errorHandler);\n }\n\n render() {\n const menu = [];\n let count = 0;\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n
  • \n :\n
  • {item.title}
  • \n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
      \n {menu}\n
    \n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","// Image zoom and crop widget.\n\nimport React from 'react';\n\nconst DEFAULT_MAX_ZOOM = 2.5;\n\nexport default class Cropper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Coordinates of the top left corner of the image in container coordinates.\n panX: 0,\n panY: 0,\n // Origin of the zoom in image coordinates.\n originX: 0,\n originY: 0,\n // Zoom scale.\n zoom: 1,\n // Zoom min and max.\n minZoom: 0,\n maxZoom: DEFAULT_MAX_ZOOM,\n };\n\n // References to DOM elements for hooking up events and getting screen dimensions.\n // The transparent element which captures mouse moves (moves with the image).\n this.overlay = React.createRef();\n // The image cutout window or view port (static).\n this.cutout = React.createRef();\n // Scaled and translated image preview.\n this.preview = React.createRef();\n // The main container (static).\n this.boundingBox = React.createRef();\n\n // The original image width and height before any scaling.\n this.imageWidth = 0;\n this.imageHeight = 0;\n\n // Mouse position when dragging.\n this.mouseX = 0\n this.mouseY = 0;\n // Length of the previous mouse move when dragging.\n this.prevDistance = 0;\n\n // Bounding rectangles of static elements.\n this.cutoutRect = {};\n this.bBoxRect = {};\n // Center of the bounding box.\n this.originX = 0;\n this.originY = 0;\n\n this.initScaling = this.initScaling.bind(this);\n this.onZoom = this.onZoom.bind(this);\n this.handleZoom = this.handleZoom.bind(this);\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseTouch = this.mouseTouch.bind(this);\n this.positionAll = this.positionAll.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n componentDidMount() {\n this.overlay.current.addEventListener('mousedown', this.mouseDown, { passive: true });\n this.overlay.current.addEventListener('touchstart', this.mouseDown, { passive: true });\n\n // The rectangle position is in viewport coordinates.\n this.bBoxRect = this.boundingBox.current.getBoundingClientRect();\n // Center of the bounding box in container coordinates.\n this.originX = this.bBoxRect.width / 2;\n this.originY = this.bBoxRect.height / 2;\n\n // The rectangle position is in viewport coordinates.\n this.cutoutRect = this.cutout.current.getBoundingClientRect();\n }\n\n componentWillUnmount() {\n this.overlay.current.removeEventListener('mousedown', this.mouseDown);\n this.overlay.current.removeEventListener('touchstart', this.mouseDown);\n }\n\n // Position all elements.\n positionAll(panX, panY, zoom) {\n // Zoom origin in image preview coordinates.\n this.setState({\n panX: panX,\n panY: panY,\n zoom: zoom,\n originX: this.originX - panX,\n originY: this.originY - panY,\n });\n\n // Pass cut out coordinates to caller.\n const left = (this.originX - panX) * zoom - this.originX;\n const top = (this.originY - panY) * zoom - this.originY;\n this.props.onChange(\n (left + this.cutoutRect.left - this.bBoxRect.left) / zoom,\n (top + this.cutoutRect.top - this.bBoxRect.top) / zoom,\n this.cutoutRect.width / zoom,\n this.cutoutRect.height / zoom,\n zoom);\n }\n\n // Check if new location is within the limits.\n static checkBound(currPan, img, cutout, delta) {\n let nextDiff = Math.min(0, cutout[0] - img[0] - delta, img[1] - cutout[1] + delta);\n if (nextDiff == 0) {\n // Cutout is completely within the image.\n currPan += delta;\n } else if (Math.min(0, cutout[0] - img[0], img[1] - cutout[1]) < nextDiff) {\n // Cutout is outside of the range but closer to the bound.\n currPan += delta;\n }\n return currPan;\n }\n\n initScaling() {\n // Initialize components.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n this.imageWidth = imgRect.width;\n this.imageHeight = imgRect.height;\n\n // Set zoom slider's min and max values. Make sure the scaled image cannot be smaller than the cutout.\n const minZoom = Math.max(this.cutoutRect.width / imgRect.width, this.cutoutRect.height / imgRect.height);\n this.setState({\n minZoom: minZoom,\n maxZoom: Math.max(DEFAULT_MAX_ZOOM, minZoom + 1)\n });\n\n // Initial zoom level fills the bounding box at the smallest image dimension and overflows the largest, i.e. \"fill\" not \"fit\".\n const zoom = Math.max(this.bBoxRect.width / imgRect.width, this.bBoxRect.height / imgRect.height);\n // Converting from viewport coordinates to container, then panning.\n const panX = this.cutoutRect.left - this.bBoxRect.left -\n (imgRect.width - this.cutoutRect.width) / 2;\n const panY = this.cutoutRect.top - this.bBoxRect.top -\n (imgRect.height - this.cutoutRect.height) / 2;\n\n this.positionAll(panX, panY, zoom);\n }\n\n onZoom(e) {\n this.handleZoom(e.target.value);\n }\n\n handleZoom(zoom) {\n let panX = this.state.panX;\n let panY = this.state.panY;\n\n // Ensure that the image at the new zoom is not outside of the cutout boundaries.\n // Calculate image coordinates at the new zoom.\n const imgLeft = this.originX - (this.originX - panX) * zoom;\n const imgRight = imgLeft + this.imageWidth * zoom;\n // Cutout in the same coordinates as the image.\n const coLeft = this.cutoutRect.left - this.bBoxRect.left;\n const coRight = coLeft + this.cutoutRect.width;\n if (coLeft < imgLeft) {\n panX -= imgLeft - coLeft;\n } else if (coRight > imgRight) {\n panX += coRight - imgRight;\n }\n const imgTop = this.originY - (this.originY - panY) * zoom;\n const imgBottom = imgTop + this.imageHeight * zoom;\n const coTop = this.cutoutRect.top - this.bBoxRect.top;\n const coBottom = coTop + this.cutoutRect.height;\n if (coTop < imgTop) {\n panY -= imgTop - coTop;\n } else if (coBottom > imgBottom) {\n panY += coBottom - imgBottom;\n }\n\n this.positionAll(panX, panY, zoom);\n }\n\n mouseDown(e) {\n if (e.touches) {\n this.mouseX = e.touches[0].pageX;\n this.mouseY = e.touches[0].pageY;\n } else {\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n }\n\n window.addEventListener('mousemove', this.mouseMove, { passive: false });\n window.addEventListener('touchmove', this.mouseTouch, { passive: false });\n window.addEventListener('mouseup', this.mouseUp, { passive: true });\n window.addEventListener('touchend', this.mouseUp, { passive: true });\n // Disable text selection in the entire document.\n document.body.style['userSelect'] = 'none';\n }\n\n // Perform image panning.\n translate(pageX, pageY) {\n const dX = pageX - this.mouseX;\n const dY = pageY - this.mouseY;\n\n this.mouseX = pageX;\n this.mouseY = pageY;\n\n // Make sure the image is within the cutout window.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n // Check if the new position is within the boundaries, and if not if it's closer to them.\n let panX = Cropper.checkBound(this.state.panX, [imgRect.left, imgRect.right],\n [this.cutoutRect.left, this.cutoutRect.right], dX);\n let panY = Cropper.checkBound(this.state.panY, [imgRect.top, imgRect.bottom],\n [this.cutoutRect.top, this.cutoutRect.bottom], dY);\n\n this.positionAll(panX, panY, this.state.zoom);\n }\n\n // Image panning.\n mouseMove(e) {\n e.preventDefault();\n this.translate(e.pageX, e.pageY);\n }\n\n mouseTouch(e) {\n e.preventDefault();\n\n if (e.touches.length == 1) {\n this.translate(e.touches[0].pageX, e.touches[0].pageY);\n return;\n }\n\n // Image zooming by pinching.\n const [touch0, touch1] = e.touches;\n const distance = Math.sqrt((touch0.pageX - touch1.pageX) * (touch0.pageX - touch1.pageX) +\n (touch0.pageY - touch1.pageY) * (touch0.pageY - touch1.pageY));\n\n if (!this.prevDistance) {\n this.prevDistance = distance / this.state.zoom;\n }\n\n let scale = (distance / this.prevDistance);\n this.handleZoom(Math.max(this.minZoom, Math.min(this.maxZoom, scale)));\n }\n\n mouseUp(e) {\n window.removeEventListener('mousemove', this.mouseMove);\n window.removeEventListener('touchmove', this.mouseTouch);\n window.removeEventListener('mouseup', this.mouseUp);\n window.removeEventListener('touchend', this.mouseUp);\n // Re-enable text selection.\n document.body.style['userSelect'] = '';\n\n this.positionAll(this.state.panX, this.state.panY, this.state.zoom);\n }\n\n render() {\n // transform3d: position and scale.\n const t3d = `translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`;\n // transformOrigin: zoom origin.\n const orig = `${this.state.originX}px ${this.state.originY}px`;\n\n // Overlay position and size are exactly equal to the position and size of the transformed image\n // except it uses different coordinates.\n const overlay = {\n top: `${this.originY - this.state.originY * this.state.zoom}px`,\n left: `${this.originX - this.state.originX * this.state.zoom}px`,\n width: `${this.imageWidth * this.state.zoom}px`,\n height: `${this.imageHeight * this.state.zoom}px`\n };\n return (\n
    \n
    \n \"\"\n\n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
    \n \n
    \n
    \n {iconFromMime(this.props.content.type)}\n
    {shortenFileName(this.props.content.name, 24) || '-'}
    \n
    {this.props.content.type || 'application/octet-stream'}
    \n
    {bytesToHumanSize(this.props.content.size)}
    \n
    \n
    \n \n
    \n );\n }\n};\n","import React from 'react';\n\nimport MenuCancel from './menu-cancel.jsx';\n\nexport default class ErrorPanel extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n show: false,\n };\n\n this.hide = this.hide.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.level !== this.props.level) {\n this.setState({\n show: !(!this.props.level)\n });\n }\n }\n\n hide() {\n this.setState({show: false});\n if (this.props.onClearError) {\n this.props.onClearError();\n }\n }\n\n render() {\n const icons = {err: 'error', warn: 'warning', info: 'info'}\n const level = icons[this.props.level] || '';\n const className = 'info-box ' + level;\n return (\n
    \n
    {level}
    \n \n {this.props.text}\n {this.props.action ?\n <>\n {e.preventDefault(); this.props.action();}}>\n {this.props.actionText}\n \n \n : null}\n \n
    \n
    \n );\n }\n};\n","// File uload/download progress indicator with a cancel inside.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class FileProgress extends React.PureComponent {\n render() {\n return (\n
    \n
    \n {this.props.progress < 0.999 ?\n {e.preventDefault(); this.props.onCancel();}}>\n close \n \n :\n \n }\n
    \n );\n }\n}\n","// Forward Menu: message forwarding popup/dropdown menu.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport ContactList from './contact-list.jsx';\nimport SearchContacts from './search-contacts.jsx';\n\nexport default class ForwardDialog extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n query: null\n };\n\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClose = this.handleClose.bind(this);\n\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleContactSelected = this.handleContactSelected.bind(this);\n }\n\n componentDidMount() {\n this.props.onInitFind();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n // Not forwarding the message.\n this.props.hide(false);\n }\n }\n\n handleClose(e) {\n e.preventDefault();\n this.props.hide(false);\n }\n\n handleSearchContacts(query) {\n this.setState({ query: Tinode.isNullValue(query) ? null : query });\n this.props.onSearchContacts(query);\n }\n\n handleContactSelected(uid) {\n this.props.onTopicSelected(uid);\n this.props.hide(true);\n }\n\n render() {\n let contacts = this.state.query != null ? this.props.searchResults : this.props.contacts;\n // Filter out contacts without a 'W' or 'J' permissions as well as the current topic.\n contacts = contacts.filter((c) => {\n return (c.name != this.props.topicSelected) && c.acs.isJoiner() && c.acs.isWriter();\n });\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n {\n (search_placeholder) => \n }\n {\n (not_found_placeholder) => \n }\n
    \n
    \n );\n }\n}\n","// GroupMembers: control for managing a list of group members.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\nimport ContactList from './contact-list.jsx';\n\nconst messages = defineMessages({\n no_contacts: {\n id: 'no_contacts',\n defaultMessage: 'You have no contacts :-(',\n description: 'Shown in ContactsView when the user has no contacts'\n },\n contacts_not_found_short: {\n id: 'contacts_not_found_short',\n defaultMessage: \"No contacts match ''{query}''\",\n description: 'Shown in ContactsView when search returned no results'\n }\n});\n\nclass GroupManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Array of topic members\n members: props.members,\n index: GroupManager.indexMembers(props.members),\n staticMembers: GroupManager.staticMembers(props.members, props.keepInitialMembers, props.requiredMember),\n contactFilter: '',\n noContactsMessage: props.intl.formatMessage(messages.no_contacts),\n selectedContacts: GroupManager.selectedContacts(props.members)\n };\n\n this.handleContactSelected = this.handleContactSelected.bind(this);\n this.handleMemberRemoved = this.handleMemberRemoved.bind(this);\n this.handleContactFilter = this.handleContactFilter.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static indexMembers(members) {\n let index = {};\n members.map((m) => {\n index[m.user] = {delta: 0, present: true}; // Delta: 0 unchanged, +1 added, -1 removed\n });\n return index;\n }\n\n static staticMembers(members, keepInitial, requiredMember) {\n let stat = [];\n members.map((m) => {\n if (keepInitial || m.user == requiredMember) {\n stat.push(m.user);\n }\n });\n return stat;\n }\n\n static selectedContacts(members) {\n let sel = [];\n members.map((m) => {\n sel.push(m.user);\n });\n return sel;\n }\n\n handleContactSelected(userId, index) {\n let status = this.state.index[userId];\n if (status) {\n if (status.present) {\n // Prevent duplicate members\n return;\n }\n status.delta += 1;\n status.present = true;\n } else {\n status = {delta: 1, present: true};\n }\n\n let m = this.state.members.slice();\n m.push(this.props.contacts[index]);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleMemberRemoved(userId, index) {\n const status = this.state.index[userId];\n if (!status || !status.present) {\n return;\n }\n status.present = false;\n status.delta -= 1;\n\n let m = this.state.members.slice();\n m.splice(index, 1);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleContactFilter(val) {\n const {formatMessage} = this.props.intl;\n const msg = !val ?\n formatMessage(messages.no_contacts) :\n formatMessage(messages.contacts_not_found_short, {query: val});\n\n this.setState({contactFilter: val, noContactsMessage: msg});\n }\n\n static doContactFiltering(filter, values) {\n if (filter) {\n for (let i=0; i= 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n handleSubmit() {\n var instance = this;\n var members = [];\n var added = [];\n var removed = [];\n\n var keys = Object.keys(this.state.index);\n keys.map(function(k) {\n if (instance.state.index[k].present) {\n members.push(k);\n }\n\n if (instance.state.index[k].delta > 0) {\n added.push(k);\n } else if (instance.state.index[k].delta < 0) {\n removed.push(k);\n }\n });\n this.props.onSubmit(members, added, removed);\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(GroupManager);\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
    \n \n
    \n );\n return usersOnline.length == countToShow;\n });\n\n return (\n
    {usersOnline} {totalCount > countToShow ?\n \n \n : null}\n
    \n );\n }\n};\n","import React from 'react';\n\nimport { KNOWN_HOSTS } from '../config.js';\n\n/* Combobox for selecting host name */\n\nexport default class HostSelector extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n hostName: props.serverAddress,\n changed: false\n };\n\n this.handleHostNameChange = this.handleHostNameChange.bind(this);\n this.handleEditingFinished = this.handleEditingFinished.bind(this);\n }\n\n handleHostNameChange(e) {\n this.setState({hostName: e.target.value, changed: true});\n }\n\n handleEditingFinished() {\n if (this.state.changed) {\n this.setState({changed: false});\n this.props.onServerAddressChange(this.state.hostName.trim());\n }\n }\n\n render() {\n var hostOptions = [];\n for (let key in KNOWN_HOSTS) {\n let item = KNOWN_HOSTS[key];\n hostOptions.push(\n