{"_id":"@meddream/viewer-communication","_rev":"30-d2b1af27fcc59dbad2698d889eb68a79","name":"@meddream/viewer-communication","dist-tags":{"latest":"1.0.60"},"versions":{"1.0.5":{"name":"@meddream/viewer-communication","version":"1.0.5","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.5","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"2df5dc02a5168ed39022a4bf9a8eb6873bc44866","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.5.tgz","fileCount":4,"integrity":"sha512-ilDXyr7gPE7bA6QDIz+IrSXXJgoK4HJhvnLs5mad3XPaNCZ2saLGw7JGjs7g8DnylVWxTMyvjt2kPeBhZ+orOQ==","signatures":[{"sig":"MEQCIHJuacSx3rtdyD6fCsAjYeDshlhCjaKpRo2tZbA8m6w6AiBv5Kj+XLUOkybNbDmQvIKNY3pR9IGz1u34AbSnq4IJUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqM0UCRA9TVsSAnZWagAAh6gP/jrGyBx/AOG8B6wgg/AX\n431WB70VlzYd9mm76BLx7CdRTbAnDkPwvgXHvhKQ/HmfJePS6uZBXERZi1eg\nsda6vh17rXgGKIBqOg+zYZktBypGfE5Uz2vSSgIgsUgL+OHD4bkNFjqOcEKt\n9qfUZE/hru5SeW4Y3jYn5BwV5nyfZ2xVYOfJCeICp22Iqgkuq7Xho062m2Xb\nVUgItXhQJf3Z1hEjDVlqMAgaOV8x69vdfugJUjAf2vKhtW3fqli0dZTKMJfk\nlDPQ6Os3VCb2oKUC71ZNf99/GzceQv/z7nE1Yx30C/zS9iVuJDz3bUpZKAo7\neD2RreOpLIsrDgmwGzsoSE/gUKdCGFfRvXExrOmP1ns8HTqn5qYmTBbvUjoi\n0RSj+hakrYeAtj6KOo63YB2NO8412FRWjJx9BW12J/i66xUXgxLey9feZ96r\nOXy6fb9jdhPrIiaQsfVLC7hWmWPvUr23UwV5xQjXRyllABFQO475bqknlESI\n+ioNVFxudc4s5C1kwUKFI4zpBZR+x8ZuORbhdG2a6R84W5ruO479hq+OxiL0\nQ4b5ekcJGY4R+Cx1/c9tW2Z8UrnbtoPdyzFqkh/EEJIb65zYk25BbSL3j/v9\nnXw4rbp2w1QplISOmWlhGlU59r0kfSlDKOqhnP25k/5l769iPrbhEmf/+c32\nDwFb\r\n=zdlK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0462fd1fafcfcbc20db77ea7aa2a8b8c01ebbb8a","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"8.1.4","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"17.2.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.5_1638452500193_0.9513284527604016","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@meddream/viewer-communication","version":"1.0.6","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.6","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"7d9edb47748471862fef632985d0acec5e3c1752","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.6.tgz","fileCount":4,"integrity":"sha512-87D97ehI8sEV/f5oEHnNY2Q0cm+oALVAOgRNZ6Y9Ep7Eojf3uEaGzkYeYzyToHjfIZJh1Xczak/jnRx1sHMtsg==","signatures":[{"sig":"MEYCIQCoVkscIblBmhMKxWR9wJgCyHbV3bsFAiX8l+JSbCRhKAIhANA1Eq/lkRluQvDVqTcMKugHz/FYFZTPOZ0kYW5rS0Bx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFM70ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2jA/7B3499oHGvqHAcEwSKK7FqV9YQ9rvxC9ICDUpkt/Hzrl3O4ip\r\nZkax+DO7+u6toRzg2EbdqtIJxRWxj+pjiAZy6+1wi/4HXO0q9AC2m1lqt3i2\r\nKJ9FQUa/WiahQ9m6wGxUxJkW39vHHAGHK/PBme38BgkQU/JJ+Bm0RjtkzuIK\r\nqdDjO8aV+zSBrFjj3P/hQJfZRlll3Z6dm0tvTp6tHgb7BcI0NKC3ifOS4DDg\r\nInEfKfRQyIGjNiJYHNcyJL7dfOSp/ZDwSg35TY4mblsrWB+sOHOmqC9wen4O\r\nM/QEmaAMnHzk6UqmhRT5bFQfndG/TkZWxqdynJ8FULHANTO7h/7BPECrNrhK\r\nMTzxP5Z5EHrJk70+f521Ir9bl9EjDNSGvGrDCcgv54DiuxsqerTJMcDazmLe\r\ncdKcNnDTgp4sooJTKMOar/UlLz3OS/Tr4PL10y+tvids88XQUUi5UKynoz6b\r\ncB6uUCmoxQ+l1WFCS+Xg3yUIaS5UimNVQhMc+C9Z4CURZ3HBloAk6QoxwCtr\r\nPe5KeMSF2aBJJXir74QetRduXi/O/+s4MR34bklX22nbhbf7lOvjj37ICqKG\r\nq8JqRFLyPPN9VDueBb8zz9ZEIoVGEzijGKzjDmraQpOyyHVpkfoFe2SBVskC\r\n1epFQJyGhqlPXiMiQHn4eyikjVmjH8pztok=\r\n=M3++\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f7951c263e36c9e54c980c912c759add98d36009","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"8.4.1","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"17.5.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.6_1645530868806_0.7139783832720656","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"@meddream/viewer-communication","version":"1.0.7","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.7","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"a42d2f60c47c9052207786d606fe5cd9ea32c568","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.7.tgz","fileCount":4,"integrity":"sha512-oGik1Zg7R1N70DhqcsCVL+FpHw7c7vFwdu+T04PB3LJVwOwjFS4aoH+Fe1Vfvj1BXbnmBAf47dMSOlBiXRvqJg==","signatures":[{"sig":"MEUCIEFSqx398rH4SlFl+4v14eR+g/9wFafbMgpxhI7wTPXmAiEAqOarctioBvHIMPBq5AB0R0/tJoxdzcLhzJmKecS6qVo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJih0ARACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0Qg//SSbKh6QH03bHEJk7OYEmSl/2PvqSSD4G29Ua2b/EDMo4anNr\r\nYKw9SnzWecxUN196QUwQ12ead05rz/FCNzTQKkBE3WoXQthxCMI4eUIYI4Hp\r\nsMXtBllM0SAg4n+baPI1mlrLpKBxMUBS77oXcZ6H8AWeXtPuamqIJ7AAILua\r\nMqdE04flBxMxVYGMxYArtBTPQY29g0dmWbTRkTHE2TwiJRCTh5URXlb/kRZX\r\nMtxWIZo3eRpz7PtyeyRiH+926WBCefa3iDq8E2iyccXUbaOooA786PgSfE5r\r\ntzAh5s0/Sdi2GSQwy04wSPoqZjKJrsCxuD6dEpu6YAW6JG642sIA1wOC2oeH\r\n9rMvjB1aEKrj+HnjS4eww1mKeQP8sW5p7lb8KlC2psKqBztrps+2VS7IBK8e\r\njrj7SY3JHQBqZxeM6m0X2M0J6g/pOqXAEe4JsHGwaqznV1N7Rk0gqOGXafuJ\r\nqGWN0q/8Kxwwb0gI9AsHZklrTnsv03CjtcOioWmj8PGmmv5y6XpAYC/qqxqe\r\nZOyifejuTp1kJEYaOWUUq7kAWH+R0jcmjnmllh0hfyPi4a9asyNNXY82Pomc\r\ntn60tReCWL1AfAAntr0aDq1FLwaEN0N/XZNXihLKK9Illp5CfjAo2J7pmHon\r\nFHEDm6Dkr4T3Rj8sug4L+17TEP1r5v6ma/0=\r\n=fJzv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"43f4e6ab9600ab385c08c618bb00a54884c8e94d","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"8.9.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"18.2.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.7_1653030928872_0.7386017178672524","host":"s3://npm-registry-packages"}},"1.0.10":{"name":"@meddream/viewer-communication","version":"1.0.10","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.10","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"ee9aa8277f5381151dcb7573acfe0fb1b470c0ff","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.10.tgz","fileCount":4,"integrity":"sha512-Fz5kyciNXS62Lhh2sdn8WHB6DGNbx7S/gpeIJmJ6+fuWFMz7mnSglNXehvz2cz/ihzbBuGMMSO1Tfd4hswbrQA==","signatures":[{"sig":"MEYCIQD6SrRJnrcde218n29Mu6A9j+jn8kEnqS8Rys2W0E8kCAIhAK1Qh7uBXEDqLXDTfqHazSul/bKa4O10SQn+js4PhSbL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxpDxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqlLQ/+KA7LMxQnptpcEJqRgNrEtmNCqBschaS+oZePI0uuGwUSnC3B\r\nTowD9n97n74wo3MMM5hnuiM1VFfKzd72bkX1PPporL9IhTY78TmXBdOkkc3m\r\ne8FtRhtthNjQ0Z40omPFXnSfsQV7797Uy4xVnpMzzkPT/zVu+7XAN6Gu8QdD\r\nPFmew1KwQ8kLWmR4Ni9hvtTcVwKFPWTIMIW3eZeydHrED/Tldk9sxnRZL/TS\r\n2W5CG4gyI9wQZkYfu5u5B3jNv9FtaHAU4Ua5ckgkOSQLhRMC5oQ5vd5zYCSO\r\nO8N+LR1EfJRma5Bbm6jPtYhV85WzzEj5oAeb64OUbLPnauZTk/ItVBU+fDEB\r\nAqSBfvtibuBCqsflF92D6vn1p+6ocIJiPhv/XPDwLXG5AxS6LZEYixTIQlHg\r\n+iNLUNkm0BZ7X3lZ2C07TSukhLnajbJVkpnWPGLzSOcY+o4pUOfd6KGDE6SB\r\nCpFwEQiKZtaHuzHRHZJgEEd+lOIMmlgADRdBLc+LpP6nE7VKll3oHLjqCYm0\r\nUe5UzIiM4JkZna3BDogVMbec+UzeZyV1SP2Tjx+LGZUmWS8NPle7bxBYb1z4\r\nejEcXkJtv0VGF8d+rfj/WrL2AiPkZHivc2rflLKFja4fQZT3XWXOLabMip1q\r\nkY7rK7KbPpxod2sVaxVOKrLNbwoE3wWrgW8=\r\n=FnyZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"8123522324e0f7246124f326dfd21287da4aaac8","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"9.2.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"19.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.10_1673957617041_0.3705670760027442","host":"s3://npm-registry-packages"}},"1.0.12":{"name":"@meddream/viewer-communication","version":"1.0.12","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.12","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"b9dfc3a822b5a78c752aef1af2e67a5a2b0e6e98","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.12.tgz","fileCount":4,"integrity":"sha512-wrFRMEwEMCiqH4Z3APxhsXJp0Jp5uNiBldyVdc9FrE2lmA92So/56H/rOenMRXTdUJkWtpQOWdxGhLhT+7W14g==","signatures":[{"sig":"MEYCIQC12Pq/2xgs80Tn/cKEu5LDTaDAjmLDK8ba41qBoQBoSAIhAIcT5YKi7RVpy4+MFehE90X3C/T2PQSEG9SGnOQ25UE6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJTNUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoouw/6A0J9tDq/ANqwzZPu7P6NeRushHePXREYtmAmJsX3zl+H30mC\r\nwBlLn/+xsAF4PeTTSpZpFvkk7m9iXrpB52uz8wZe4l14AgesyfIAAq+HT6W+\r\njDBqLW/ml1wiPmzksqsRCdPsT33cRKa8fBxwBY3uSZmJo7tgJM6/vTGKY83v\r\n3pA4bjaZMRqZEjiNH2lc7sX082l0UOVTnBGqQ3f3iTNHWvgmgJN9apIcptcK\r\nXYBJn9Pt1XVQ68gvWnLDVrUu9RMyCT3w2pwUJTK4MgS80b4Sm3AiXxaEYST4\r\nrvivDI7j+jO+46W/RJ/2OtU+gZHayN9djQhzvLa9XWW7tjvb7ySo8HQNArx+\r\n9JFoqbMg7M7ANYO4fIo6x1YMd0bBKHGtfegt/OAKN/JtT1qqZnNaP2SmZXxG\r\nn9FYm8vfukV9btIxMJ+/oLgNObOgIKE6KsUr+vIIBCWXB2sngqaesV9IKvWM\r\na5RatHOgSHWETxoysRrO9PV+kcbLZXKLiYnI6O/YbIVaGuE6UpWRlr99sgq8\r\ngbqTMxBzTy8R/vfSfpKa5kL4GUuJSH9WcZzMKUKtWZBkrCspFfLkGkmTfJVo\r\njWijyhgsVux8PZMAqnDmAegul7SOvhPhB/nHHGPJ22Wbw1yRt4MYSB1XRLnb\r\nQgyrE45KtAZRDGIlDDdMeoCsQiic8R0bQBA=\r\n=Wxw5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"00b138f9859ec6bd5de96e3f23d6eeb6171490a3","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"9.5.1","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"19.8.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.12_1680159572722_0.7848882095932828","host":"s3://npm-registry-packages"}},"1.0.18":{"name":"@meddream/viewer-communication","version":"1.0.18","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.18","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"7bdf6577e5fb277b2be7bae42db3ff5fd071a264","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.18.tgz","fileCount":4,"integrity":"sha512-KuTU297uLMDV0HRvuAwKVl4gqo6zuhIqAGG/8KEI5NrYSvyXPF9LBFcRMDEZYDZHAhDSKsZdn7UptyfSIpnGzg==","signatures":[{"sig":"MEYCIQCFKpQ38tySdlNMwjRqYkwK1UlPTDwh0rjFNrbNtILSPgIhALlNGTjrzxWh8XIEUa+BJqm3JdUAry2yP/LjNtlBbS7q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66837},"main":"index.js","gitHead":"71f8cf0e5d58188b5d4f6f0c61c4a8c4e2822bac","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"9.6.7","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"20.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.18_1688548520720_0.8657062731733858","host":"s3://npm-registry-packages"}},"1.0.20":{"name":"@meddream/viewer-communication","version":"1.0.20","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.20","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"0ffc4e179d00440700274e839a576548e516431a","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.20.tgz","fileCount":4,"integrity":"sha512-HLmG+TrwCz0txZ5yIMNP1LX8z/OPvwJmeTbiA68UZmvVCCrH+CovLNH8Gj472Bf6E8yM0Q01ARcPxrxsF8lZVw==","signatures":[{"sig":"MEUCIHI2LmEL1YORURSivtPDCDdBKLW0zwQNXu0x76QsSmF9AiEAwlzTJ50Mzln7euj6M4WdkoG/wlVZFPFgUw5yKzzlD0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69451},"main":"index.js","gitHead":"e5b8bb4a91bf76880e0b33be2775b0ddb42cdd30","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"9.8.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.20_1691756717370_0.18957034186676913","host":"s3://npm-registry-packages"}},"1.0.22":{"name":"@meddream/viewer-communication","version":"1.0.22","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.22","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"7e5d6237f88e1183c5e0e07d2c538ed1a4c5689b","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.22.tgz","fileCount":4,"integrity":"sha512-MRuecQZxtLRYC6oYSkLjVKFjG2rm9cBcTyOQ9RpWz8+IMMuBqyx+RNC3vBjVhQVGVE1V7jVrQs588YW2WDH1yA==","signatures":[{"sig":"MEYCIQCPidT3ovnY/Yeswl3mRDTlvwVa8xWIYBYfS1kjRcVMKwIhANJCsFnRA7nbUda2J6rVRF1M0IK4VeJ1/jPSsjDZwROs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73027},"main":"index.js","gitHead":"643db24b16dd0de4a2d8baddf2287aa9e841f9c1","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.2.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"21.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.22_1698406441201_0.1510161957033782","host":"s3://npm-registry-packages"}},"1.0.23":{"name":"@meddream/viewer-communication","version":"1.0.23","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.23","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"3b39bfbde7a92ffb6b50d7f3595b6aefc3413d6f","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.23.tgz","fileCount":4,"integrity":"sha512-I7uAOmdyWsUsJmLNjzBUtK6GwtaUrfqqRCVWtIZ6XRXl4BMTCA3s4w+TeIUdCqsjCKdqUd/D7fsUSTi0uyIbrw==","signatures":[{"sig":"MEUCIQDO+Xi57vfAxVZWZNC1bCC0VVYqYdvOnKVKMaG7CcOe1AIgPS41n4+gSJCcpx0csiVeUF2lxGm5l/bad//x9v1dILc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73311},"main":"index.js","gitHead":"2a731d656b105768ce6a1fad926b76443b12b4ab","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.2.4","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"21.5.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.23_1703243077101_0.6838503349530529","host":"s3://npm-registry-packages"}},"1.0.24":{"name":"@meddream/viewer-communication","version":"1.0.24","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.24","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"924aca04afa63c776183f32ee24aeb49ab47b174","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.24.tgz","fileCount":4,"integrity":"sha512-ELzBHLGLwdyK+fjLDk9M2a5dDBSbLRvI/YEZjB+XKPJ2bHkUhqXzSo07XjVw+UFDuYmZizWdOBHQfugy3W73Vg==","signatures":[{"sig":"MEUCIQCUfRfuTGgLd58CvOq+aaA04XVQlchy62F/6KC2NlSnSAIgZKlat+YgZkzsBXTV8cNckkweIDXf1qvrywYXABXkUJo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73343},"main":"index.js","gitHead":"2fc1aa98c1325043dfd193d000e0ca9393cbbe7f","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.2.4","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"21.5.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.24_1703249103048_0.5937908971433297","host":"s3://npm-registry-packages"}},"1.0.30":{"name":"@meddream/viewer-communication","version":"1.0.30","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.30","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"6fea443613b2b3a52993add01c1b1fca19865a06","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.30.tgz","fileCount":4,"integrity":"sha512-ED7kDs3fNFO8bDzHa5H/4GZd8KbeDrTEt63PwDOP9aOadnIuzzNnDnCuMkM8S1zXexRtTkwyBLjgUIGUNeeQVQ==","signatures":[{"sig":"MEQCICRkMXJuLwym8WZtkuTggrOQ63RzvVAIO+lgP7lveMxBAiBpixxAkH5twZbYxmRu1slV+rtdUADUVXTekm5vUe19nA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79334},"main":"index.js","gitHead":"cc917ca70bb30d5537ee610f297b7335bebb19d0","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.5.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.30_1713276027910_0.999655197215255","host":"s3://npm-registry-packages"}},"1.0.31":{"name":"@meddream/viewer-communication","version":"1.0.31","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.31","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@softneta.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"ccf4e8e66a346bf23393ef28ae0b89fa8de7fdb2","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.31.tgz","fileCount":4,"integrity":"sha512-P1KWPrFhn6+H//2h9ZUI+0ZQXMV2hH9vdufRGaN2uS28xlKWDWgoB0d/8VoDuhu4KdfdEmfuv349uWdza2huLg==","signatures":[{"sig":"MEYCIQDPVigTOubwmThSk+sq8VT4B9RB/LbDJwZyR1uvrq/5nQIhAIHrJ0VECAvA+yY+4KFAI/xtWllzmmOE/+CwXncZ2VpP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91646},"main":"index.js","gitHead":"924ce70ad16fe2695d23230b29359d1c612d1841","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.8.2","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"22.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.31_1724846267790_0.6648483104636187","host":"s3://npm-registry-packages"}},"1.0.34":{"name":"@meddream/viewer-communication","version":"1.0.34","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.34","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"094e2e3e25289347bfe804c356f48d07f4315e65","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.34.tgz","fileCount":4,"integrity":"sha512-zi12SWXpftNKJO1jDchjfIXSCDSC9x2tW2F3hWhYSlhTzav0/VBM3kppCyD1i9xFBZ0eywLO70bK7CQbHcQPJw==","signatures":[{"sig":"MEUCIGj4tcc53YGCFj43NcyZx0NHBnulSoPv0qVDdnuf74QbAiEAxcXnO13tsjEjvh/ltRtwY9h9E/UjSSexuhpbEGpx0x4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105482},"main":"index.js","gitHead":"511bd7d6df39bd25600e0f6d7a3610be11432e8b","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.9.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"23.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.34_1733309177181_0.9615574645693723","host":"s3://npm-registry-packages"}},"1.0.35":{"name":"@meddream/viewer-communication","version":"1.0.35","author":{"name":"UAB Softneta"},"license":"UNLICENSED","_id":"@meddream/viewer-communication@1.0.35","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"eff229f6f89052b6eb2bf724b6e1bb9bb096a434","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.35.tgz","fileCount":4,"integrity":"sha512-q4T51v7TjEDajuyglbjhMOqOuacDfoqjs+XICDAfRTmbBHX+w+y85uz2whac/ypVq8XmGgjqxDXDaJnkH+rHYQ==","signatures":[{"sig":"MEUCIQCFEih8ma68wygzoFiPKSGPWb0Xm8tBevKgg+2QxDAE8QIgVbKe6v5PeL3DiSj0Ou0Vi3wOfSGir6U8Wc+Cm+mc1p4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105802},"main":"index.js","gitHead":"4421631319af86753a311507f5ea8defc893ceca","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.9.0","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"23.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.35_1733840104565_0.04100176821702628","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"@meddream/viewer-communication","version":"1.0.37","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.37","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"75507b9efebc2f7ba84d0a2acf0a36169a3e0812","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.37.tgz","fileCount":5,"integrity":"sha512-RxVB8jsLVleb4z/d9jGvArw7pzq9iXHxYMIX4eHf3N66sKUStl1BUEqIUyptEdHOpFVEeH/HEZgI/AuqaaVSMA==","signatures":[{"sig":"MEQCIDJQkPoQRfcC4w32vORSfPJita5SDzL2LfNUJR6+hzKtAiBvL6IPI/5k8d4lYm4xMQ4kJr+HU7E40TQv62/cuK4WPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125757},"main":"index.js","gitHead":"c56db7b1bb19c81ca4f1c89a4ba504aa9b035547","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.9.2","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.37_1738569336703_0.057978397459530706","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"@meddream/viewer-communication","version":"1.0.39","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.39","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/softneta/viewer-communication#readme","bugs":{"url":"https://github.com/softneta/viewer-communication/issues"},"dist":{"shasum":"a1a9c31632ee21eff014d7a68f7ad04d7b8dcd4c","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.39.tgz","fileCount":5,"integrity":"sha512-0bnLcyae1/DrW9nhWeCtofmvBbXg0S9BysfTAlQ9N0p4XXtfw9k6yuZFsMs0a66lzOr9nkQKwOqERAduEMGm9Q==","signatures":[{"sig":"MEUCIFR89GnEG5V2XP2vfXMRNeyWSKCg8ece2RfzIiURaZgQAiEA3MxDzceX4TUWQj9zPBM3Hpe9UGLOugONnFILdS0Cj9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132843},"main":"index.js","gitHead":"0e1ae707466d829da53255ebec53145506bb523c","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/softneta/viewer-communication.git","type":"git"},"_npmVersion":"10.9.2","description":"## Add component to your project Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.39_1742828533621_0.7365421926310225","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"name":"@meddream/viewer-communication","version":"1.0.40","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.40","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"0c01bf5d08d366892da0e16d81701290441d324e","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.40.tgz","fileCount":5,"integrity":"sha512-OiIME7NlcO6vKXdvvlAYO0KhzF6049SEIYJpTDjUJBwomEeymbc7wit7lgWqm4OGHUtwz5jZLXyBgqb7m8U2Xg==","signatures":[{"sig":"MEQCIGLV8LeLUDEk2vkq4ipUjzP554QoqZq2aJVcHczPd4A9AiBvI5yQ+Y3Z17addbYi7AeCyD3XdFUYl/Nls+Uz5Wb8/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133939},"main":"index.js","gitHead":"e3f9765e348d1bdb1e66425c00273e9137cd4048","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.3.0","description":"Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"24.0.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.40_1747734531355_0.7702343858910528","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"@meddream/viewer-communication","version":"1.0.41","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.41","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"9dad14efbd39fe2345be7671927b41d0855002b4","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.41.tgz","fileCount":5,"integrity":"sha512-ONUbuTa6PgqxnWOVcXUSyZ9DIhqrRYdfp1sq+9EbvvIGvixiyZbII4IzDWHGXtd7qj2bZxWVaOlstN+5mEuUuw==","signatures":[{"sig":"MEUCIQCA1kdat4vIFsFpnBtca2MIUro8DiZM2L9dbyCRAMZbKAIgUtCWn4l4lJEc16jy2v6EtbwBGcmRL5+36MqVfnsPSSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137427},"main":"index.js","gitHead":"6a6e94a14670b33ba66492d40abbdd84f1bc341a","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.3.0","description":"Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.41_1749728914991_0.08898065743494299","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"@meddream/viewer-communication","version":"1.0.42","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.42","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"19feb5f62dff7ab5f6f77c9131b58d035b753952","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.42.tgz","fileCount":5,"integrity":"sha512-dZQmm+WPq30f473g44t/XLoG9r8WXaXA04GgB6aE6miQqTYWCaaRTUjrMVaUyO3HOswqKPkIn3vAvBQdlZXRrQ==","signatures":[{"sig":"MEUCIQDbQuyTKCivceBRbqjqeLyrUfrrCTqCH0Lr1suWxQwYxgIgMskUqFzQ0Jc/x5JPFqCZZjGG4toEoo9TRHDK1kxHM0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139515},"main":"index.js","gitHead":"21b3f3ed0804a6654d30e62ab169a0c0e6683c1f","_npmUser":{"name":"edvinas","actor":{"name":"edvinas","type":"user","email":"edvinas.kastaljanovas@softneta.com"},"email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.3.0","description":"Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.42_1750417777198_0.8378622023781102","host":"s3://npm-registry-packages-npm-production"}},"1.0.47":{"name":"@meddream/viewer-communication","version":"1.0.47","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.47","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"e55427fc04e61337ce22cbe752bd9ff9502b734d","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.47.tgz","fileCount":5,"integrity":"sha512-RJMFjj+lEb0AvWLWNh2T6Wg1VUrhFRneNc+3BHSUANQTG9ZWtVd6I+XgMLHqS4DPT0PxZchHCFjBxaaaK4P4wg==","signatures":[{"sig":"MEUCIQDlq3S76Z3kn8v+XW/ITTSafJIGrKTQ9niPcg1oc5C28QIgGGKp9ly/O5fmIqU9PifEOh9daD27RaKqzvsc0FpktPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147913},"main":"index.js","gitHead":"7264770ec26a2a2d6c687f4a5dc16242b02eb121","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.5.1","description":"Import and create new Viewer Communication component in your project:","directories":{},"_nodeVersion":"24.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.47_1756211832006_0.3392388730957949","host":"s3://npm-registry-packages-npm-production"}},"1.0.51":{"name":"@meddream/viewer-communication","version":"1.0.51","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.51","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"b6bd0ccc0de71524d01ae77d86b852847d55bb59","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.51.tgz","fileCount":6,"integrity":"sha512-MZRK5pChr3OK5Uuw70KzyAl/pHcr8NJIYa8PUX4GinLvRSsGMWrxmlX8dBU0Y7tBvNtLmu4dXtDW7s5w3kLhcw==","signatures":[{"sig":"MEYCIQCqE3NOEgK0spC0LNGkm1qAIKErH3ShVSxPc86/7WopAQIhAPuACRbfwzUejBAAV/8gZQ28x0wTFl73r9xHaB2VWLbc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146835},"main":"index.js","gitHead":"92171e38f6b16fa10d78254329115978fcb14978","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.6.2","description":"Locate `application.properties` file in your MedDream backend location. Open the file with text editor and add following line:","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.51_1762503641447_0.2993984031325272","host":"s3://npm-registry-packages-npm-production"}},"1.0.52":{"name":"@meddream/viewer-communication","version":"1.0.52","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.52","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"e0f8a79665a9a90df9ad01a50685d46df398c7a0","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.52.tgz","fileCount":6,"integrity":"sha512-7DCT/YTpYDQRmm16Ev9d5pQHrx3nTUtVaCN1IYe0cFSfE1J79JlJjZnguiAhlw181Y0iJIp98ySumJ6BOCHWCw==","signatures":[{"sig":"MEYCIQDqOkqk0DOT/Ocgro04H+ijpJh0lr40GlBarekEp5a2AQIhAMY7m9iHjbovRV+SUYfzGzuY4qmvF2y5fZftOYdOaNMb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146926},"main":"index.js","gitHead":"9f3fd8f95ee6e58e5544a6f27f7abc55c436bfe8","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@softneta.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.6.2","description":"Locate `application.properties` file in your MedDream backend location. Open the file with text editor and add following line:","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.52_1765803059331_0.738601503814039","host":"s3://npm-registry-packages-npm-production"}},"1.0.59":{"name":"@meddream/viewer-communication","version":"1.0.59","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.59","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@meddream.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"6f0f4293933a5e1961866f9a963ee8904e9e5782","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.59.tgz","fileCount":6,"integrity":"sha512-7MpvYM1zrfOIbK2WhK+NoC58TBIo/aV208u8mBon4sOMXL5mhuaIE5wiqbI6QswVFvQvjmkL2ClY/jzxGZcaTg==","signatures":[{"sig":"MEYCIQDy0WSQSNMnfdZFnxSsJ8heKiKxWtBEi+kFielJMm622QIhALu7LnWyydpRpNuFqVH8vr4cbE3o56WyZ4yagEAvcG5I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155047},"main":"index.js","gitHead":"4affb2a492e35a1d7f88e1724e3f547bc0cdef75","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@meddream.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.12.1","description":"Locate `application.properties` file in your MedDream backend location. Open the file with text editor and add following line:","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.59_1778162059096_0.05037182912029303","host":"s3://npm-registry-packages-npm-production"}},"1.0.60":{"name":"@meddream/viewer-communication","version":"1.0.60","author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@meddream/viewer-communication@1.0.60","maintainers":[{"name":"softneta","email":"tomas.dumbliauskas@meddream.com"},{"name":"edvinas","email":"edvinas.kastaljanovas@meddream.com"}],"homepage":"https://github.com/meddream/viewer-communication#readme","bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"dist":{"shasum":"2c9d934d5c5557d26c1e5725e1bc25a6ca4bce74","tarball":"https://registry.npmjs.org/@meddream/viewer-communication/-/viewer-communication-1.0.60.tgz","fileCount":6,"integrity":"sha512-ed+7K4akZkpi4snw9cPm+ypnsnSFI1baZaTgt2oo8XH4dDkz1UV+t+yT6FOqcgfmUHou5FFUU77yBNGimKBJMw==","signatures":[{"sig":"MEQCIEpGVQY/InJ3d71WRh6KzRDGA94h0unbsOkVN4gZzt+nAiAtEF/+Bqa1UqWtVb+GPPjP3Ug3pueUP2w2Etljv32tRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155138},"main":"index.js","gitHead":"246fa7538aac2f0fe7c9760a19550bdcb0a5a062","_npmUser":{"name":"edvinas","email":"edvinas.kastaljanovas@meddream.com"},"repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"_npmVersion":"11.16.0","description":"Locate `application.properties` file in your MedDream backend location. Open the file with text editor and add following line:","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viewer-communication_1.0.60_1780401974925_0.2549180347607205","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2021-12-02T13:41:40.149Z","modified":"2026-07-27T14:27:28.069Z","1.0.4":"2021-12-02T13:36:41.450Z","1.0.5":"2021-12-02T13:41:40.340Z","1.0.6":"2022-02-22T11:54:28.940Z","1.0.7":"2022-05-20T07:15:29.045Z","1.0.10":"2023-01-17T12:13:37.213Z","1.0.12":"2023-03-30T06:59:32.869Z","1.0.18":"2023-07-05T09:15:20.956Z","1.0.20":"2023-08-11T12:25:17.556Z","1.0.22":"2023-10-27T11:34:01.420Z","1.0.23":"2023-12-22T11:04:37.307Z","1.0.24":"2023-12-22T12:45:03.289Z","1.0.30":"2024-04-16T14:00:28.181Z","1.0.31":"2024-08-28T11:57:48.000Z","1.0.34":"2024-12-04T10:46:17.411Z","1.0.35":"2024-12-10T14:15:04.788Z","1.0.37":"2025-02-03T07:55:36.875Z","1.0.39":"2025-03-24T15:02:13.812Z","1.0.40":"2025-05-20T09:48:51.550Z","1.0.41":"2025-06-12T11:48:35.163Z","1.0.42":"2025-06-20T11:09:37.389Z","1.0.47":"2025-08-26T12:37:12.175Z","1.0.51":"2025-11-07T08:20:41.650Z","1.0.52":"2025-12-15T12:50:59.503Z","1.0.59":"2026-05-07T13:54:19.259Z","1.0.60":"2026-06-02T12:06:15.074Z"},"bugs":{"url":"https://github.com/meddream/viewer-communication/issues"},"author":{"name":"UAB MedDream"},"license":"SEE LICENSE IN LICENSE.txt","homepage":"https://github.com/meddream/viewer-communication#readme","repository":{"url":"git+https://github.com/meddream/viewer-communication.git","type":"git"},"description":"Locate `application.properties` file in your MedDream backend location. Open the file with text editor and add following line:","maintainers":[{"email":"tomas.dumbliauskas@meddream.com","name":"softneta"},{"email":"edvinas.kastaljanovas@meddream.com","name":"edvinas"},{"email":"eitautas.simaitis@meddream.com","name":"mdes"},{"email":"tomas.simanynas@meddream.com","name":"tomas.simanynas"}],"readme":"# MedDream Viewer Communication API\n##### Version 1.0.60 (2026-06-02)\n\n## Update your MedDream backend configuration\nLocate `application.properties` file in your MedDream backend location.\nOpen the file with text editor and add following line:\n\n```text\nsecurity.postMessageWhitelist=*\n```\n\nAdded `postMessageWhitelist` parameter is needed to prevent MedDream viewer from receiving `postMessage` from unwanted sources.\n`*` symbol means that viewer will accept all `postMessage` commands.\nIf you want to limit the viewer to accept only the whitelisted origins then you can provide origin url's seperated by `,` symbol.\nExample:\n\n```text\nsecurity.postMessageWhitelist=https://example.com,http://localhost:8080\n```\n\n## Add component to your project\nImport and create new Viewer Communication component in your project:\n\n```js\nconst viewerCommunication = new ViewerCommunication(targetURL, integration);\n```\n\nParameters:\n\n- `targetURL` - MedDream Viewer URL.\n- `integration` (Optional) - Integration type: `study` or `token`. Default value: `study`.\n\n## Window reference functions\n### Get current Viewer window reference\n```js\nconst windowReference = viewerCommunication.getWindowReference();\n```\n\n### Find available Viewer window reference\n```js\nconst windowReference = viewerCommunication.findWindowReference();\n```\n\n### Focus available window\n```js\nviewerCommunication.focusWindow();\n```\n\n### Post action message to MedDream Viewer\n```js\nviewerCommunication.postActionMessage(actionType, actionData);\n```\n\nParameters:\n\n- `actionType` - Action message command type.\n- `actionData` - Data needed for action message.\n\nFor more details about available action messages check: `MedDream communication documentation`.\n\n## Viewer communication integration functions\n### Get current integration type\n```js\nconst integrationType = viewerCommunication.getIntegrationType();\n```\n\n### Update integration type\n```js\nviewerCommunication.updateIntegrationType(newIntegrationType);\n```\n\nParameter:\n\n- `newIntegrationType` - Integration type: `study` or `token`.\n\n## Functions to open MedDream Viewer\n### Open studies in MedDream Viewer window\n```js\nviewerCommunication.openInMedDreamWindow(studies/token);\n```\n\nParameters:\n\n- `studies` (For `study` integration) - Study uid's list separated with `,`.\n- `token` (For `token` integration) - Token with study information.\n\n### Add studies to MedDream Viewer window\n```js\nviewerCommunication.addToMedDreamWindow(studies/token);\n```\n\nParameters:\n\n- `studies` (For `study` integration) - Study uid's list separated with `,`.\n- `token` (For `token` integration) - Token with study information.\n\n### Replace studies in MedDream Viewer window\n```js\nviewerCommunication.replaceInMedDreamWindow(studies/token);\n```\n\nParameters:\n\n- `studies` (For `study` integration) - Study uid's list separated with `,`.\n- `token` (For `token` integration) - Token with study information.\n\n### Open MedDream with studies to iframe\n```js\nviewerCommunication.openMedDreamToIframe(iframeId, studies/token);\n```\n\nParameters:\n\n- `iframeId` - Iframe element id.\n- `studies` (For `study` integration) - Study uid's list separated with `,`.\n- `token` (For `token` integration) - Token with study information.\n\n## Communication functions\n### Functions only for Study integration\n#### Open study\n```js\nviewerCommunication.openStudy(study);\n```\n\nParameter:\n\n- `study` - Study uid.\n\n#### Open studies\n```js\nviewerCommunication.openStudies(studies);\n```\n\nParameter:\n\n- `studies` - Array of study uid's.\n\n#### Replace studies\n```js\nviewerCommunication.replaceStudies(studies);\n```\n\nParameters:\n\n- `studies` - Array of study uid's.\n- `preloadThumbnails` - Parameter to enable thumbnail preloading. Available options: **_true_**/**_false_**.\n\n#### Preload studies\n```js\nviewerCommunication.preloadStudies(studies, preloadThumbnails);\n```\n\nParameter:\n\n- `studies` - Array of study uid's.\n\n#### Cache studies\n```js\nviewerCommunication.cacheStudies(studies);\n```\n\nParameter:\n\n- `studies` - Array of study objects. Each study object has **_studyUid_** and **_storageId_** parameters.\n\nArray example:\n\n```js\nconst studies = [\n    {\n        studyUid: 'study-uid-1',\n        storageId: 'storage-id'\n    },\n    {\n        studyUid: 'study-uid-2',\n        storageId: 'storage-id'\n    }\n];\n```\n\n#### Show studies\n```js\nviewerCommunication.showStudies(studies);\n```\n\nParameter:\n\n- `studies` - Array of study objects. Each study object has **_studyUid_** and **_storageId_** parameters.\n\nArray example:\n\n```js\nconst studies = [\n    {\n        studyUid: 'study-uid-1',\n        storageId: 'storage-id'\n    },\n    {\n        studyUid: 'study-uid-2',\n        storageId: 'storage-id'\n    }\n];\n```\n\n#### Hide studies\n```js\nviewerCommunication.hideStudies(studies);\n```\n\nParameter:\n\n- `studies` - Array of study objects. Each study object has **_studyUid_** and **_storageId_** parameters.\n\nArray example:\n\n```js\nconst studies = [\n    {\n        studyUid: 'study-uid-1',\n        storageId: 'storage-id'\n    },\n    {\n        studyUid: 'study-uid-2',\n        storageId: 'storage-id'\n    }\n];\n```\n\n#### Close studies\n```js\nviewerCommunication.closeStudies(studies);\n```\n\nParameter:\n\n- `studies` - Array of study objects. Each study object has **_studyUid_** and **_storageId_** parameters.\n\nArray example:\n\n```js\nconst studies = [\n    {\n        studyUid: 'study-uid-1',\n        storageId: 'storage-id'\n    }\n];\n```\n\n### Functions only for Token integration\n#### Open studies\n```js\nviewerCommunication.openStudies(token);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n#### Replace studies\n```js\nviewerCommunication.replaceStudies(token);\n```\n\nParameters:\n\n- `token` - Generated token with studies information.\n- `preloadThumbnails` - Parameter to enable thumbnail preloading. Available options: **_true_**/**_false_**.\n\n#### Preload studies\n```js\nviewerCommunication.preloadStudies(token, preloadThumbnails);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n#### Cache studies\n```js\nviewerCommunication.cacheStudies(token);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n#### Show studies\n```js\nviewerCommunication.showStudies(token);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n#### Hide studies\n```js\nviewerCommunication.hideStudies(token);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n#### Close studies\n```js\nviewerCommunication.closeStudies(token);\n```\n\nParameter:\n\n- `token` - Generated token with studies information.\n\n### Common functions\n#### Cache all studies\n```js\nviewerCommunication.cacheAllStudies();\n```\n\n#### Close all studies\n```js\nviewerCommunication.closeAllStudies();\n```\n\n#### Set panel layout\n```js\nviewerCommunication.setPanelLayout(rows, columns);\n```\n\nSets the number of panels (study panels) in the viewer layout.\n\nParameters:\n\n- `rows` - Number of panel rows.\n- `columns` - Number of panel columns.\n\n#### Set layout\n```js\nviewerCommunication.setLayout(columns, rows, panelId);\n```\n\nSets the inner viewport layout within a panel.\n\nParameters:\n\n- `columns` - Number of viewport columns.\n- `rows` - Number of viewport rows.\n- `panelId` (Optional) - Target panel ID. If omitted, the first panel is used.\n\n#### Open instance\n```js\nviewerCommunication.openInstance({\n    instanceUid,\n    panelId,\n    viewportColumn,\n    viewportRow,\n    viewportActions,\n    frameNumber\n});\n```\n\nObject parameters:\n\n- `instanceUid` - Unique instance uid (virtual or db uid) which has to be opened to viewport.\n- `panelId` - If provided, identifies the target panel, where this instance is intended to be opened up. If not provided,\n  shall default to the first panel.\n- `viewportColumn` - Column number of desired viewport.\n- `viewportRow` - Row number of desired viewport.\n- `viewportActions` - Object of actions which have to be performed on viewport after instance is loaded.\n- `frameNumber` - (Optional) The number of the frame to display in a multi-frame instance.\n\nAvailable viewport actions:\n\n- `windowing` - Windowing level. Available options: **_\"DEFAULT\"_**, **_\"AUTO\"_**, **_\"CUSTOM\"_**.\nIf **_\"CUSTOM\"_** windowing is selected, **_customWindowing_** parameter has to be defined in **_viewportActions_** object.\n- `customWindowing` - Custom windowing level. This parameter allows to set custom windowing **_width_** and **_center_** levels.\n**_customWindowing_** has to be defined only when **_\"CUSTOM\"_** windowing is selected.\n- `rotation` - Instance rotation by defined number of degrees.\n- `verticalFlip` - Vertical instance flip. Available options: **_true_**/**_false_**.\n- `horizontalFlip` - Horizontal instance flip. Available options: **_true_**/**_false_**.\n- `scale` - Instance scaling option. Available options: **_\"ORIGINAL\"_**, **_\"FIT_TO_SCREEN\"_**, **_\"CUSTOM\"_**.\nIf **_\"CUSTOM\"_** scale is selected, **_customScale_** parameter has to be defined in **_viewportActions_** object.\n- `customScale` - Custom scale number.\n- `alignment` - Instance alignment in viewport. Available options: **_\"RIGHT\"_**, **_\"LEFT\"_**, **_\"CENTER\"_**.\n\nViewport actions object example:\n\n```js\nconst viewportActions = {\n    windowing: 'CUSTOM',                    //DEFAULT, AUTO, CUSTOM\n    customWindowing: {width: 2, center: 2}, //Use if custom windowing\n    rotation: 45,\n    verticalFlip: true,\n    horizontalFlip: true,\n    scale: 'CUSTOM',                        //ORIGINAL, FIT_TO_SCREEN, CUSTOM\n    customScale: 0.5,                       //Use if custom scale\n    alignment: 'CENTER'                     //RIGHT, LEFT, CENTER\n};\n```\n\n#### Export instance\n```js\nviewerCommunication.exportInstance(viewportColumn, viewportRow, panelId);\n```\n\nParameters:\n\n- `viewportColumn` (Optional) - Column number of desired viewport.\n- `viewportRow` (Optional) - Row number of desired viewport.\n- `panelId` (Optional) - Target panel ID. If omitted, the first panel is used.\n\nCurrently active viewport instance is exported, if `viewportColumn` and `viewportRow` are not provided.\n\n#### Update segmentation tool permissions\n```js\nviewerCommunication.updateSegmentationToolPermissions(permissions);\n```\n\nParameter:\n\n- `permissions` - Object with segmentation permissions.\n\nAvailable segmentation permissions:\n\n- `boundingBoxView` - Permission to see bounding box tab. Default value: **_false_**.\n- `boundingBox2dEdit` - Permission to edit 2d bounding box tab. Default value: **_false_**.\n- `boundingBox3dEdit` - Permission to edit 3d bounding box tab. Default value: **_false_**.\n- `boundingBoxInfo` - Permission to see bounding box information button and panel. Default value: **_false_**.\n- `freeDrawView` - Permission to see free draw tab. Default value: **_false_**.\n- `freeDrawEdit` - Permission to edit free draw tab. Default value: **_false_**.\n- `smartPaintView` - Permission to see smart paint tab. Default value: **_false_**.\n- `smartPaint2dEdit` - Permission to use 2d smart paint tool. Default value: **_false_**.\n- `smartPaint3dEdit` - Permission to use 3d smart paint tool. Default value: **_false_**.\n- `smartPaintInfo` - Permission to see smart paint information button and panel. Default value: **_false_**.\n\nUsage example:\n\n```js\nconst permissions = {\n    boundingBoxView: true,\n    boundingBox2dEdit: true,\n    boundingBox3dEdit: true,\n    boundingBoxInfo: false,\n    freeDrawView: true,\n    freeDrawEdit: true,\n    smartPaintView: true,\n    smartPaint2dEdit: true,\n    smartPaint3dEdit: true,\n    smartPaintInfo: false\n};\nviewerCommunication.updateSegmentationToolPermissions(permissions);\n```\n\n#### Set suggested annotation names\n```js\nviewerCommunication.setSuggestedAnnotationNames(suggestedNames);\n```\n\nParameter:\n- `suggestedNames` - Array with suggested segmentation annotation names. Each entry can be a plain string or an object with the following properties:\n  - `name` - Annotation name.\n  - `color` (Optional) - Color code in hex format.\n  - `defaultToolId` (Optional) - Default tool ID to use for this annotation.\nList of supported tool IDs for 'measurement' annotations:\n- line-annotation\n- point-annotation\n- poly-annotation (polyline)\n- curve-annotation (spline based polyline)\n- erase-annotation (eraser)\n- circle-annotation\n- ellipse-annotation\n- polygon-annotation (free shape polygon)\n- bounding-box (3d)\n- bounding-box-2d\nList of supported tool IDs for 'smart-paint' annotations:\n- smart-paint-brush\n- smart-paint-brush-with-ref\n- smart-paint-fill-brush\n- smart-paint-bucket\n- smart-paint-smooth-brush\n- smart-paint-pencil\n- smart-paint-eraser\n\nArray example:\n\n```js\nconst suggestedNames = [\n    'Left',\n    'Right',\n    {name: 'Abdomen', color: '#ff0000', defaultToolId: 'smart-paint-brush'}\n];\n```\n\n#### Get opened studies\n```js\nconst callback = (studies) => console.log(studies);\nviewerCommunication.subscribeGetOpenedStudiesEvent(callback);\nviewerCommunication.getOpenedStudies();\n```\n\nUsage:\n\n- Register **_subscribeGetOpenedStudiesEvent_** **_callback_** function.\n- Call **_getOpenedStudies_** function to request opened studies data in callback function.\n- Once message is processed, **_callback_** function will be triggered with opened studies array.\n\n#### Get opened series\n```js\nconst callback = (openSeries) => console.log(openSeries);\nviewerCommunication.subscribeGetOpenedSeriesEvent(callback);\nviewerCommunication.getOpenedSeries();\n```\n\nUsage:\n\n- Register **subscribeGetOpenedSeriesEvent** **_callback_** function.\n- Call **_getOpenedSeries_** function to request opened series data in callback function.\n- Once message is processed, **_callback_** function will be triggered with opened series array.\n\n#### Get viewport data\n```js\nconst callback = (viewportData) => console.log(viewportData);\nviewerCommunication.subscribeGetViewportDataEvent(callback);\nviewerCommunication.getViewportData();\n```\n\nUsage:\n\n- Register **_subscribeGetViewportDataEvent_** **_callback_** function.\n- Call **_getViewportData_** function to request active viewport data in callback function.\n- Once message is processed, **_callback_** function will be triggered with viewport data object.\n\n#### Get viewports information\n```js\nconst callback = (viewportsInformation) => console.log(viewportsInformation);\nviewerCommunication.subscribeGetViewportsInformationEvent(callback);\nviewerCommunication.getViewportsInformation();\n```\n\nUsage:\n\n- Register **_subscribeGetViewportsInformationEvent_** **_callback_** function.\n- Call **_getViewportsInformation_** function to request viewports information in callback function.\n- Once message is processed, **_callback_** function will be triggered with viewports information array.\n\n#### Get instance metadata\n```js\nconst callback = (instanceMetadata) => console.log(instanceMetadata);\nviewerCommunication.subscribeGetInstanceMetadataEvent(callback);\nviewerCommunication.getInstanceMetadata(instanceUid);\n```\n\nParameter:\n\n- `instanceUid` - Unique instance uid which metadata you want.\n\nUsage:\n\n- Register **_subscribeGetInstanceMetadataEvent_** **_callback_** function.\n- Call **_getInstanceMetadata_** function with instanceUid to request instance metadata in callback function.\n- Once message is processed, **_callback_** function will be triggered with instance metadata object.\n\n#### Get snapshot\n```js\nconst callback = (snapshot) => console.log(snapshot);\nviewerCommunication.subscribeGetSnapshotEvent(callback);\nviewerCommunication.getSnapshot();\n```\n\nUsage:\n\n- Register **_subscribeGetSnapshotEvent_** **_callback_** function.\n- Call **_getSnapshot_** function to generate current layout with viewports snapshot and return it to **_callback_** function.\n- Once message is processed, **_callback_** function will be triggered with snapshot data.\n\n#### Set snapshot\n```js\nviewerCommunication.setSnapshot(layoutSnapshot);\n```\n\nParameter:\n\n- `layoutSnapshot` - layout and viewports snapshot which was requested by **_getSnapshot_** function and returned to **_callback_** function.\n\n#### Update button visibility\n```js\nviewerCommunication.updateButtonVisibility(buttonsVisibility);\n```\n\nParameter:\n\n- `buttonsVisibility` - Object consistent of toolbar button names(keys) and their visibility value - true(hidden), false(shown).\n\nObject example:\n\n```js\nconst buttonsVisibility = {\n    'dicom-tag-list': true,\n    'mpr-mist-oblique': true,\n    'key-object-selection': true\n};\n```\n\n#### Set multiframe fps ratio\n```js\nviewerCommunication.setMultiframeFpsRatio(fpsRatio);\n```\n\nParameter:\n\n- `fpsRatio` - Number of new multiframe fps ratio. Default value: `1`.\n\n#### Pan viewport\n```js\nviewerCommunication.panViewport(containerId, delta);\n```\n\nParameters:\n\n- `containerId` - viewport container id.\n- `delta` - Object with x and y axis pan delta.\n\nObject example:\n\n```js\nconst delta = {\n    x: 10,\n    y: 15\n};\n```\n\n#### Show info labels\n```js\nviewerCommunication.showInfoLabels(value);\n```\n\nParameter:\n\n- `value` - Boolean to show or hide viewports labels.\n\n#### Set additional info labels\n```js\nviewerCommunication.setAdditionalInfoLabels(labels);\n```\n\nParameter:\n\n- `labels` - Object of top left or right labels and parameters to hide original dicom labels.\n\nObject example:\n\n```js\nconst labels = {\n    topLeftLabels: [\n        {\n            // At which level labels are displayed. Level can be 'series' or 'study'.\n            // If both are provided then series will be displayed.\n            level: 'series',\n            // Series uid because it is series level.\n            uid: '1.2.840.113619.2.55.3.4271045733.996.1449464144.601',\n            labels: ['series', 'label'],\n            hideDicomLabels: false\n        }\n    ],\n    topRightLabels: [\n        {\n            level: 'study',\n            // Study uid because it is study level.\n            uid: '1.2.840.113619.2.55.3.4271045733.996.1449464144.601',\n            labels: ['patient', 'right'],\n            hideDicomLabels: false\n        }\n    ]\n}\n```\n\n#### Set custom study label\n```js\nviewerCommunication.setCustomStudyLabel(studyUid, label);\n```\n\nParameters:\n\n- `studyUid` - Study UID for which the label should be applied to.\n- `label` - String to show in study header.\n\n#### Set additional custom study and series tags\n```js\nviewerCommunication.setCustomTags(tags);\n```\n\nParameter:\n\n- `tags` - Array of objects of tags to add to study and series. Each object has level, uid and tags.\n\nObject example:\n\n```js\nconst tags = [\n    {\n        // At which level labels are displayed. Level can be 'series' or 'study'.\n        level: 'study',\n        // Study uid because it is study level.\n        uid: '1.2.840.113619.2.55.3.4271045733.996.1449464144.595',\n        // Tags to add to study. Each tag has text and color properties\n        tags: [{text: 'Leg', color: '#f6ff00'}, {text: 'Right knee', color: '#0d00ff'}, {text: 'Leg', color: '#d000ff'}]\n    },\n    {\n        level: 'series',\n        // Series uid because it is series level.\n        uid: '1.2.840.113619.2.55.3.4271045733.996.1449464144.598',\n        tags: [{text: 'Abdomen', color: '#40f616'}, {text: 'Right knee', color: '#0d00ff'}]\n    }\n]\n```\n\n#### Generate instance MPR\n```js\nviewerCommunication.generateInstanceMpr(containerId);\n```\n\nParameter:\n\n- `containerId` - viewport container id. If no container id is provided then active container is used.\n\n#### Change viewport orientation\n```js\nviewerCommunication.changeViewportOrientation(containerId, orientation);\n```\n\nParameters:\n\n- `containerId` - viewport container id. If no container id is provided then active container is used.\n- `orientation` - orientations: `CORONAL`, `AXIAL`, `SAGITTAL`.\n\n#### Create new measurement\n```js\nviewerCommunication.createNewMeasurement(containerId, measurementData);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement will be created.\n- `measurementData` - Object with measurement data which will be created in viewport.\n\nMeasurement data object example:\n\n```js\nconst measurementData = {\n    id: 'closed-polygon-id-1',\n    type: 'closed-polygon',\n    containerId: 'viewport-container-1-1',\n    studyUid: 'study-uid-1',\n    seriesUid: 'series-uid-1',\n    instanceUid: 'instance-uid-1',\n    colors: {\n        regularColor: '#FFA500',\n        activeColor: '#33CCFF',\n        markedColor: '#009BFF',\n        activeLabelColor: '#FFF'\n    },\n    data: {\n        points: [\n            [80, 113, 42],\n            [221, 1, 42],\n            [335, 132, 42],\n            [178, 224, 42],\n            [80, 113, 42]\n        ],\n        disabled: false\n    }\n};\n```\n\n#### Update measurement\n```js\nviewerCommunication.updateMeasurement(containerId, measurementData);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement will be created.\n- `measurementData` - Object with measurement data to use updating existing measurement.\n\n#### Delete measurement by id\n```js\nviewerCommunication.deleteMeasurementById(measurementId);\n```\n\nParameter:\n\n- `measurementId` - Measurement id that has to be deleted.\n\n#### Mark measurement by id\n```js\nviewerCommunication.markMeasurementById(containerId, measurementId);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement should be marked.\n- `measurementId` - Measurement id that has to be marked.\n\n#### Unmark measurement by id\n```js\nviewerCommunication.unmarkMeasurementById(containerId, measurementId);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement should be unmarked.\n- `measurementId` - Measurement id that has to be unmarked.\n\n#### Click measurement tool\n```js\nviewerCommunication.clickMeasurementTool(toolId);\n```\n\nParameter:\n\n- `toolId` - Measurement tool id.\n\nPossible measurement tool id's:\n\n```text\nMeasurement tool Line: 'measure-line'\nMeasurement tool Angle: 'measure-angle'\nMeasurement tool Cobb Angle: 'measure-cobb-angle'\nMeasurement tool Polyline: 'measure-polyline'\nMeasurement tool Area: 'measure-area'\nMeasurement tool Ellipse: 'measure-oval'\nMeasurement tool Rectangle: 'measure-rectangle-area'\nMeasurement tool Volume: 'measure-volume'\nMeasurement tool Height Difference: 'measure-height'\nMeasurement tool VTI: 'measure-vti'\nMeasurement tool CTR: 'measure-cardiothoracic-ratio'\nMeasurement tool TPA: 'measure-tibial-plateau-angle'\nMeasurement tool Norberg Angle: 'measure-norberg-angle'\nMeasurement tool VHS: 'measure-vertebral-heart-size'\nMeasurement tool Flatfoot: 'measure-flat-foot'\nMeasurement tool Goniometry: 'measure-goniometry'\nMeasurement tool TT-TG Distance: 'measure-tt-tg-distance'\nMeasurement tool HTO Angles: 'measure-hto-angles'\nMeasurement tool Vertebra Angle: 'measure-vertebra-angle'\nMeasurement tool Spine Labeling: 'measure-spine'\nMeasurement tool Hip DI: 'measure-hip-distraction-index'\nMeasurement tool TTA: 'measure-tibial-tuberosity-advancement'\nMeasurement tool ROI: 'measure-roi'\nMeasurement tool Closed polygon: 'measure-closed-polygon'\nMeasurement tool Flexpoly: 'measure-flexpoly'\nMeasurement tool Pencil: 'measure-pencil'\nMeasurement tool Arrow: 'measure-arrow-pointer'\nMeasurement tool Text: 'measure-text'\nMeasurement tool Measurement (mV, s): 'measure-ecg-mvs'\nMeasurement tool QT points (RR, QT, QTc): 'measure-ecg-qt'\nMeasurement tool Hr: 'measure-ecg-hr'\nMeasurement tool QRS Axis: 'measure-ecg-qrs'\nMeasurement tool Myocardium ROI: 'measure-myocardium-roi'\nMeasurement tool Mask: 'measure-rectangle-mask'\nMeasurement tool Repulsor: 'measure-repulsor'\nMeasurement tool Intensity: 'measure-intensity'\n\nIn case you want to turn off any possibly active measurement tool, use the following tool ID: 'apply-measurement-none'.\n```\n\n#### Select measurement to edit\n```js\nviewerCommunication.selectMeasurementToEdit(containerId, measurementId, parameters);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement should be edited.\n- `measurementId` - An ID of measurement to be selected.\n- `parameters` - Additional parameters object depending on type of measurement being selected.\n\nParameters data object example for `myocardium-roi-annotation`:\n\n```js\nconst parameters = {\n    toolId: 'repulsor',\n    hoveredRegionIndex: 1\n};\n```\n\nObject parameters:\n\n- `toolId` - Parameter can be one of three possible values: `repulsor`, `draw-region`, `fill-brush`.\n- `hoveredRegionIndex` - Indicates which region from myocardium ROI is intended to be edited with repulsor. Parameter is ignored if other tools are activated.\n\n#### Change measurement display by id\n```js\nviewerCommunication.changeMeasurementDisplayById(containerId, measurementId, parameters);\n```\n\nAllows to alter the way how myocardium ROI is displayed (changing display properties for other measurement types is not supported).\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement is visible.\n- `measurementId` - An ID of measurement to be updated.\n- `parameters` - Additional parameters object depending on type of measurement being updated.\n\nParameters data object example for `myocardium-roi-annotation`:\n\n```js\nconst parameters = {\n    show: false,\n    sendToFront: false\n};\n```\n\nObject parameters:\n\n- `show` Parameter is of boolean type. If true - respective myocardium ROI should be made visible. If false - it should be hidden.\n- `sendToFront` Parameter is optional. If provided and its value is true, then respective myocardium ROI should be brought to top in Z-order.\n\n#### Initiate create measurement\n```js\nviewerCommunication.initiateCreateMeasurement(containerId, measurementType);\n```\n\nParameters:\n\n- `containerId` - Viewport container id in which measurement will be created.\n- `measurementType` - Identifies the type of measurement to initiate via this method. Currently is limited to `myocardium-roi-annotation` type only.\n\n#### Get list of available HP for study\n```js\nviewerCommunication.getListOfAvailableHpForStudy();\n```\n\n#### Apply hanging protocol\n```js\nviewerCommunication.applyHangingProtocol(groupId, categoryId);\n```\n\nParameters:\n\n- `groupId` - HP group id.\n- `categoryId` - HP category id from selected group.\n\n#### Apply previous hanging protocol category\n```js\nviewerCommunication.applyPreviousHangingProtocolCategory();\n```\n\n#### Apply next hanging protocol category\n```js\nviewerCommunication.applyNextHangingProtocolCategory();\n```\n\n#### Apply next hanging protocol comparison study (CP)\n```js\nviewerCommunication.applyNextHangingProtocolCP();\n```\n\n#### Set active viewport\n```js\nviewerCommunication.setActiveViewport(containerId);\n```\n\nProgrammatically activates the specified viewport container, making it the target for all subsequent commands that operate on the active viewport (e.g., `getViewportData`).\n\nParameter:\n\n- `containerId` - Viewport container ID to activate (e.g., `viewport-container-1-1-1-1`).\n\nIf the container does not exist in the current layout, the action is silently ignored.\n\nContainer ID pattern: `{panelId}-{viewportRow}-{viewportColumn}`\n\n```js\nviewerCommunication.setActiveViewport('viewport-container-1-1-1-2');\n```\n\n#### Toggle Create Virtual Series modal dialog\n```js\nviewerCommunication.toggleVirtualSeriesDialog(actionData);\n```\n\nSubmits a request to show (or hide) a Create Virtual Series dialog.\n\nParameters:\n\n- `actionData`. An arguments to be passed over to the dialog.\n\nactionData data object example:\n\n```js\nconst actionData = {\n    action: 'show',\n    studyUid: '1.3.12.2.1107__STORAGE_ID1',\n    fromSeries: [\n        '1.3.12.2.1107__5064.0.0.0__STORAGE_ID1',\n        '1.3.12.2.1107__5064.0.0.1__STORAGE_ID1'\n    ]\n};\n```\n\nAll parameters are optional. If no parameters have been provided, the application will check if there is any open instance in active viewport,\nand will open a Create Virtual Series dialog, linked to that instance and that viewport.\nParameter `action` can have two values: 'show' or 'hide'. If parameter is omitted, this is treated as request to show the dialog.\nParameter `studyUid` goes together with parameter `fromSeries`. Either none of them is provided, or both must be present.\nThe `studyUid` indicates the study, where new virtual series should be added. The `fromSeries` indicates what series must be displayed in\nCreate Virtual Series dialog (and all of them will be displayed as pre-selected).\n\n#### Get list of menu actions, available for clicking for currently active viewport.\nThe array of action identifiers will be returned to callback, subscribed via `subscribeGetCurrentlyAvailableTopMenuItems`.\n\n```js\nviewerCommunication.getCurrentlyAvailableTopMenuItems();\n```\n\n#### Click top menu item\n```js\nviewerCommunication.clickTopMenuAction(actionId);\n```\n\nParameter:\n\n- `actionId` - An ID of menu item to be 'clicked'. The list of available menu action varies - it depends on currently active viewport\n  and other system settings (e.g., menu items can be explicitly hidden via your settings). It is possible to check what actions are available\n  by calling `getCurrentlyAvailableTopMenuItems`.\n\n\n#### Create a batch of segmenting annotations\n```js\nviewerCommunication.createSegmentingAnnotations(createArgs);\n```\n\nParameter:\n\n- `createArgs` - an object with a batch of annotations to be created. For each\n\ncreateArgs data object example is provided below. Please note the following annotation types\nare supported: 'bounding-box', 'measurement', 'smart-paint' and 'free-draw'. Color field is optional. If provided, it should contain color code in hex format.\nAnnotation types 'bounding-box' and 'measurements' are mapped to 'measurement' annotations, while all\nothers are mapped to 'smart paint' annotations.\nList of supported tool IDs for 'measurement' annotations:\n- line-annotation\n- point-annotation\n- poly-annotation (polyline)\n- curve-annotation (spline based polyline)\n- erase-annotation (eraser)\n- circle-annotation\n- ellipse-annotation\n- polygon-annotation (free shape polygon)\n- bounding-box (3d)\n- bounding-box-2d\nList of supported tool IDs for 'smart-paint' annotations:\n- smart-paint-brush\n- smart-paint-brush-with-ref\n- smart-paint-fill-brush\n- smart-paint-bucket\n- smart-paint-smooth-brush\n- smart-paint-pencil\n- smart-paint-eraser\nPlease note providing 'defaultToolId' is optional - if it is not provided, the system will default to hard-coded preferences.\n\n```js\nconst createArgs = {\n    annotations: [\n        {\n            studyDbUid: '1.3.6.1.4.1.44316.6',\n            seriesDbUid: '1.3.6.1.4.1.44316.6.1',\n            storageId: 'ABC',\n            label: 'Smart paint for CT#3',\n            annotationType: 'smart-paint',\n            color: '#112233',\n            defaultToolId: 'line-annotation'\n        }\n    ]\n};\n```\n\n### Events\n#### Subscribe communication service ready event\n```js\nconst callback = (annotations) => console.log(annotations);\nviewerCommunication.subscribeCommunicationServiceReadyEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe communication service ready event\n```js\nviewerCommunication.unsubscribeCommunicationServiceReadyEvent();\n```\n\n#### Subscribe get opened studies event\n```js\nconst callback = (studies) => console.log(studies);\nviewerCommunication.subscribeGetOpenedStudiesEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe get opened studies event\n```js\nviewerCommunication.unsubscribeGetOpenedStudiesEvent();\n```\n\n#### Subscribe get viewport data event\n```js\nconst callback = (viewportData) => console.log(viewportData);\nviewerCommunication.subscribeGetViewportDataEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe get viewport data event\n```js\nviewerCommunication.unsubscribeGetViewportDataEvent();\n```\n\n#### Subscribe get viewports information event\n```js\nconst callback = (viewportsInformation) => console.log(viewportsInformation);\nviewerCommunication.subscribeGetViewportsInformationEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe get viewports information event\n```js\nviewerCommunication.unsubscribeGetViewportsInformationEvent();\n```\n\n#### Subscribe get instance metadata event\n```js\nconst callback = (viewportsInformation) => console.log(viewportsInformation);\nviewerCommunication.subscribeGetInstanceMetadataEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe get instance metadata event\n```js\nviewerCommunication.unsubscribeGetInstanceMetadataEvent();\n```\n\n#### Subscribe get snapshot event\n```js\nconst callback = (snapshot) => console.log(snapshot);\nviewerCommunication.subscribeGetSnapshotEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered with generated snapshot information.\n\n#### Unsubscribe get snapshot event\n```js\nviewerCommunication.unsubscribeGetSnapshotEvent();\n```\n\n#### Subscribe study loaded event\n```js\nconst callback = (study) => console.log(study);\nviewerCommunication.subscribeStudyLoadedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe study loaded event\n```js\nviewerCommunication.unsubscribeStudyLoadedEvent();\n```\n\n#### Subscribe study is cached event\n```js\nconst callback = (study) => console.log(study);\nviewerCommunication.subscribeStudyIsCachedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe study is cached event\n```js\nviewerCommunication.unsubscribeStudyIsCachedEvent();\n```\n\n#### Subscribe annotations save started event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeAnnotationsSaveStartedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe annotations save started event\n```js\nviewerCommunication.unsubscribeAnnotationsSaveStartedEvent();\n```\n\n#### Subscribe annotations saved event\n```js\nconst callback = (annotations) => console.log(annotations);\nviewerCommunication.subscribeAnnotationsSavedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe annotations saved event\n```js\nviewerCommunication.unsubscribeAnnotationsSavedEvent();\n```\n\n#### Subscribe structure set edited event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeStructureSetEditedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe structure set edited event\n```js\nviewerCommunication.unsubscribeStructureSetEditedEvent();\n```\n\n#### Subscribe instance changed event\n```js\nconst callback = (viewportsInformation) => console.log(viewportsInformation);\nviewerCommunication.subscribeInstanceChangedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe instance changed event\n```js\nviewerCommunication.unsubscribeInstanceChangedEvent();\n```\n\n#### Subscribe active container changed event\n```js\nconst callback = (activeContainerInformation) => console.log(activeContainerInformation);\nviewerCommunication.subscribeActiveContainerChangedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe active container changed event\n```js\nviewerCommunication.unsubscribeActiveContainerChangedEvent();\n```\n\n#### Subscribe measurement created event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeMeasurementCreatedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe measurement created event\n```js\nviewerCommunication.unsubscribeMeasurementCreatedEvent();\n```\n\n#### Subscribe measurement updated event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeMeasurementUpdatedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe measurement updated event\n```js\nviewerCommunication.unsubscribeMeasurementUpdatedEvent();\n```\n\n#### Subscribe measurement deleted event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeMeasurementDeletedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe measurement deleted event\n```js\nviewerCommunication.unsubscribeMeasurementDeletedEvent();\n```\n\n#### Subscribe virtual series create event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeVirtualSeriesCreatedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe virtual series create event\n```js\nviewerCommunication.unsubscribeVirtualSeriesCreatedEvent();\n```\n\n#### Subscribe measurement marked event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeMeasurementMarkedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe measurement marked event\n```js\nviewerCommunication.unsubscribeMeasurementMarkedEvent();\n```\n\n#### Subscribe measurement unmarked event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeMeasurementUnmarkedEvent(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe measurement unmarked event\n```js\nviewerCommunication.unsubscribeMeasurementUnmarkedEvent();\n```\n\n#### Subscribe get list of available HP for study event\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeGetListOfAvailableHpForStudy(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe get list of available HP for study event\n```js\nviewerCommunication.unsubscribeGetListOfAvailableHpForStudy();\n```\n\n#### Create virtual series\n```js\nconst callback = ({status, details}) => console.log(status, details);\nviewerCommunication.subscribeCreateVirtualSeriesCompletedEvent(callback);\nviewerCommunication.createVirtualSeries(actionData);\n```\n\nThe function requests creating virtual series from provided arguments.\nParameters:\n\n- `actionData` - Arguments to pass over to virtual series builder.\n\nactionData data object example:\n\n```js\nconst actionData = {\n    studyUid: '1.3.12.2.1107__STORAGE_ID1',\n    fromSeries: [\n        '1.3.12.2.1107__5064.0.0.0__STORAGE_ID1',\n        '1.3.12.2.1107__5064.0.0.1__STORAGE_ID1'\n    ],\n    postActions: {\n        openIn: 'viewport-container-1-1-1-2'\n    }\n};\n```\n\nParameter `studyUid` is an UID of the study, where new virtual series have to be added.\nParameter `fromSeries` is an array of strings. Each string represents an UID of a series from target study.\nParameter `postActions` is optional. If provided, it is a JSON structure with a field, named `openIn`. The field is a container ID,\nwhere newly created series should be opened up right after creating the series. If parameter is not provided, created series will not be\nopened up in any viewport.\n\nThe callback will receive an object with two fields:\n- `status`. This is a string, identifying whether an operation to create virtual series succeeded or failed. There are two possible values here:\n  'success' or 'error'.\n- `details`. In case the operation has failed, it contains a string, describing a reason of failure.\n  In case an operation was successfull, a JSON object will be returned, containing two fields:\n- `studyUid` (the UID of the study, where new series have been added)\n- `seriesUid` (the UID of new series)\n\nUsage:\n\n- Register **subscribeCreateVirtualSeriesCompletedEvent** **_callback_** function.\n- Call **_createVirtualSeries_** function to request creating new virtual series.\n- Once message is processed, **_callback_** function will be triggered with result of operation.\n\n#### Subscribe to event by event name\n```js\nconst eventName = 'image-position-changed';\nconst callback = (eventParams) => console.log(eventParams);\nviewerCommunication.subscribeEventByName(eventName, callback);\n```\n\nParameter:\n\n- `eventName` - The name of event to subscribe to. See documentation to viewports-core library, `CORE_EVENTS` for a list of available events.\n- `callback` - Callback function which is called when event is triggered. All arguments from fired event are assembled into single array, in the order of original appearance.\n\n#### Unsubscribe from event by event name\n```js\nconst eventName = 'image-position-changed';\nviewerCommunication.unsubscribeEventByName(eventName);\n```\n\nParameter:\n\n- `eventName` - The name of event to unsubscribe from.\n\n#### Subscribe to get a list of menu actions, available for clicking for currently active viewport.\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeGetCurrentlyAvailableTopMenuItems(callback);\n```\n\nParameter:\n\n- `callback` - Callback function which is called when event is triggered.\n\n#### Unsubscribe to get a list of top menu actions event\n```js\nviewerCommunication.unsubscribeGetCurrentlyAvailableTopMenuItems();\n```\n\n#### Subscribe to get an update on creating a batch of segmenting annotations.\n```js\nconst callback = (data) => console.log(data);\nviewerCommunication.subscribeCreateSegmentingAnnotationsCompletedEvent(callback);\n```\n\nAn example of response from MD, providing details on batch operation. Status field may have three different values:\n'error', 'warning' and 'success'. In case of error or warning response, message field will detail the reason.\nIn case of success, message field will contain an UID of annotation created or updated.\n\n```js\nconst response = [\n    {\n        status: 'success',\n        message: 'c19e1de4-2d0f-442d-83ed-b47df6cbaa95__1.3.6.1.4.1.44316.6.102.1.20210419174428569.24310533793484120530__LOCAL_ORTH'\n    },\n    {\n        status: 'success',\n        message: '39747375-4d3e-48d9-bda6-b0eac3b6f2eb__1.3.6.1.4.1.44316.6.102.1.20210419174428569.24310533793484120530__LOCAL_ORTH'\n    }\n];\n```\n\n#### Unsubscribe from getting update on creating a batch of segmenting annotations.\n```js\nviewerCommunication.unsubscribeCreateSegmentingAnnotationsCompletedEvent();\n```\n\n## Measurement coordinates conversion\nTo ensure correct measurement recreation from data, all our measurement related functions and events work or provide 3D coordinates in patient coordinate system.\nIf you need to convert received 3D coordinate to instance 2D coordinate, you can use following function:\n```js\nfunction get2DImagePositionFrom3D (position3d) {\n    const imagePosition = this.getImagePosition();\n    const imageOrientation = this.getImageOrientation();\n    const pixelSpacing = this.getPixelSpacing();\n    const x = ((position3d[0] - imagePosition[0]) * imageOrientation[0] + (position3d[1] - imagePosition[1]) * imageOrientation[1]\n        + (position3d[2] - imagePosition[2]) * imageOrientation[2]) / pixelSpacing.x;\n    const y = ((position3d[0] - imagePosition[0]) * imageOrientation[3] + (position3d[1] - imagePosition[1]) * imageOrientation[4]\n        + (position3d[2] - imagePosition[2]) * imageOrientation[5]) / pixelSpacing.y;\n    return {\n        x: x + 0.5,\n        y: y + 0.5\n    };\n}\n```\n\nIf you need to convert 2D coordinate back to 3D coordinate, then you can use this function:\n```js\nfunction get3DImagePositionFrom2D (position2d) {\n    const offsetPosition = {\n        x: position2d.x - 0.5,\n        y: position2d.y - 0.5\n    };\n    const imagePosition = this.getImagePosition();\n    const imageOrientation = this.getImageOrientation();\n    const pixelSpacing = this.getPixelSpacing();\n    const x = imagePosition[0] + imageOrientation[0] * offsetPosition.x * pixelSpacing.x\n        + imageOrientation[3] * offsetPosition.y * pixelSpacing.y;\n    const y = imagePosition[1] + imageOrientation[1] * offsetPosition.x * pixelSpacing.x\n        + imageOrientation[4] * offsetPosition.y * pixelSpacing.y;\n    const z = imagePosition[2] + imageOrientation[2] * offsetPosition.x * pixelSpacing.x\n        + imageOrientation[5] * offsetPosition.y * pixelSpacing.y;\n    return [x, y, z];\n}\n```\n\n## Change log\n### 1.0.60 (2026-06-02)\n#### Changes\n- Version update for MedDream 8.9.0 version release.\n\n### 1.0.59 (2026-04-30)\n#### Changes\n- Added `setPanelLayout` function to set the number of study panels in the viewer layout.\n- Added `setActiveViewport` function to programmatically activate a specific viewport container.\n- Updated `setLayout` documentation to include the optional `panelId` parameter.\n- Updated `exportInstance` documentation to include the optional `panelId` parameter.\n\n### 1.0.58 (2026-04-22)\n#### Changes\n- Updated `setSuggestedAnnotationNames` function documentation, as function now accepts more information (such as color, default tool ID).\n\n### 1.0.57 (2026-04-14)\n#### Changes\n- Updated `setCustomTags` documentation example colors.\n\n### 1.0.56 (2026-04-10)\n#### Changes\n- Updated documentation for `createSegmentingAnnotations` to reflect new ability to specify default tool ID.\n\n### 1.0.55 (2026-02-13)\n#### Changes\n- Updated documentation for `createSegmentingAnnotations` to reflect recent changes.\n\n### 1.0.54 (2026-02-04)\n#### Changes\n- Added `panViewport` function to support viewport panning.\n- Updated `getViewportsInformation` with additional viewport information for pan calculations.\n\n### 1.0.53 (2026-01-13)\n#### Changes\n- Added copyright information.\n\n### 1.0.52 (2025-12-15)\n#### Changes\n- Version update for MedDream 8.8.0 version release.\n\n### 1.0.51 (2025-10-30)\n#### Changes\n- Added `markMeasurementById` function to mark viewport measurements.\n- Added `unmarkMeasurementById` function to unmark viewport measurements.\n\n### 1.0.50 (2025-10-24)\n#### Changes\n- Added `setMultiframeFpsRatio` function to control multiframe fps ratio.\n\n### 1.0.49 (2025-10-22)\n#### Changes\n- Added `Update your MedDream backend configuration` documentation section with information on how to configure `postMessage` whitelist.\n\n### 1.0.48 (2025-08-29)\n#### Changes\n- Added frameNumber parameter to `openInstance` function to support opening specific frames in multi-frame instances.\n\n### 1.0.47 (2025-08-19)\n#### Changes\n- Fixed example creation issues.\n\n### 1.0.46 (2025-08-05)\n#### Changes\n- Expanded the list of tool IDs, accepted by function `clickMeasurementTool`. New tool ID can be used to deactivate any measurement tool, that\nmay have been made active via measurements menu or communications API. The ID to use is `apply-measurement-none`.\n\n### 1.0.45 (2025-07-29)\n#### Changes\n- Fixed a bug that was blocking propagation of events for scenarios where MedDream is deployed with a context path (eg, http://mywebsite.com/meddream).\n\n### 1.0.44 (2025-07-28)\n#### Changes\n- Added function `createSegmentingAnnotations` to initiate creating segmenting annotations in batch mode.\n- Added `subscribeCreateSegmentingAnnotationsCompletedEvent` function to subscribe of create a batch of segmenting annotations event callback.\n- Added `unsubscribeCreateSegmentingAnnotationsCompletedEvent` function to unsubscribe of create a batch of segmenting annotations event callback.\n\n### 1.0.43 (2025-07-08)\n#### Changes\n- Added function `clickTopMenuAction` to simulate a click on a menu item from top toolbar.\n- Added function `getCurrentlyAvailableTopMenuItems` to request obtaining a list of top menu items, available for currently selected viewport.\n- Added `subscribeGetCurrentlyAvailableTopMenuItems` function to subscribe of list of available top menu items event callback.\n- Added `unsubscribeGetCurrentlyAvailableTopMenuItems` function to unsubscribe of list of available top menu items event callback.\n\n### 1.0.42 (2025-06-18)\n#### Changes\n- Added missing `Click measurement tool` documentation section with information about `clickMeasurementTool` function.\n\n### 1.0.41 (2025-06-03)\n#### Changes\n- Updated library example file.\n- Updated `openInstance` function documentation.\n- Updated `selectMeasurementToEdit` function documentation.\n- Updated `setSuggestedAnnotationNames` function documentation.\n- Updated `changeMeasurementDisplayById` function documentation.\n- Updated `clickMeasurementTool` function documentation with supported measurements tools list.\n\n#### Breaking changes\n- Removed `openInstanceExt` function, use `openInstance` function instead.\n- Updated `openInstance` function to accept object with parameters. Function right now supports different panels and different type of instance uid's.\n- Updated `setSuggestedAnnotationNames` to accept array with annotation names instead of object.\n- Updated `clickMeasurementTool` function to accept tool id string instead of object.\n\n### 1.0.40 (2025-04-16)\n#### Changes\n- Added `setSuggestedAnnotationNames` function to pass a list of suggested names for segmenting annotations.\n\n### 1.0.39 (2025-02-28)\n#### Changes\n- Added `subscribeStudyIsCachedEvent` function to subscribe of study is cached event callback.\n- Added `unsubscribeStudyIsCachedEvent` function to unsubscribe of study is cached event callback.\n- Updated `preloadStudies` function for study and token integrations to allow preloading thumbnails with `preloadThumbnails` parameter.\n- Updated `getOpenedStudies` function callback with information if study is visible or hidden.\n\n### 1.0.38 (2025-02-21)\n#### Changes\n- Added `showStudies` function to show hidden thumbnail studies.\n- Added `hideStudies` function to hide visible thumbnail studies.\n\n### 1.0.37 (2025-01-16)\n#### Changes\n- Updated project license.\n\n### 1.0.36 (2024-12-11)\n#### Changes\n- Change log update.\n\n### 1.0.35 (2024-12-10)\n#### Changes\n- Updated `Measurement coordinates conversion` section functions to adjust position based on viewport half pixel offset.\n\n### 1.0.34 (2024-12-02)\n#### Changes\n- Fixed a problem with ViewerCommunication object being reinstantiated multiple times by some customers. The object should have been used as singleton,\nbut multiple objects were created and left hanging around. A constructor of ViewerCommunication has been rewritten to destroy previously created\nobjects.\n\n### 1.0.33 (2024-11-20)\n#### Changes\n- Added function `subscribeEventByName` to allow subscribing to any event, that is being fired via `triggerEvent` mechanism by viewports-core library.\n- Added function `unsubscribeEventByName` to allow unsubscribing from events, previously subscribed via `subscribeEventByName`.\n- Added function `clickMeasurementTool` to allow manipulating menu items from Measurements menu (simulating clicks by end user).\n\n### 1.0.32 (2024-11-08)\n#### Changes\n- Added function `getOpenedSeries` to request obtaining a list of currently opened series from all opened studies\n- Added functions `subscribeGetOpenedSeriesEvent` and `unsubscribeGetOpenedSeriesEvent` to subscribe/unsubscribe to `getOpenedSeries` request callback.\n- Added function `openInstanceExt` to open specified instance in specified viewport (lookup by UID instead of db UID and supports panel layout)\n- Added function `createVirtualSeries` to initiate an operation to create virtual series from provided parameters\n- Added functions `subscribeCreateVirtualSeriesCompletedEvent` and `unsubscribeCreateVirtualSeriesCompletedEvent` to subscribe/unsubscribe to\n`createVirtualSeries` request callback.\n- Added function `toggleVirtualSeriesDialog` to show/hide Create Virtual Series dialog with (optional) provided parameters.\n\n### 1.0.31 (2024-07-29)\n#### Changes\n- Added functions `subscribeMeasurementMarkedEvent`, `subscribeMeasurementUnmarkedEvent` to listen on measurement mark events.\n- Added function `subscribeVirtualSeriesCreatedEvent` to listen when virtual series are created.\n- Added function `updateMeasurement` to enable update of existing measurement without destroying underlying object.\n- Added function `initiateCreateMeasurement` to support creating myocardium ROI and activate default editing tool.\n- Added function `selectMeasurementToEdit` to support either selecting closed_polygon or myocardium ROI objects for editing.\n- Added function `changeMeasurementDisplayById` to allow show/hide myocardium ROI or rearrange myocardium ROIs on Z-axis.\n\n### 1.0.30 (2024-04-16)\n#### Changes\n- Fixed integration example issues related to latest MedDream Viewer changes.\n\n### 1.0.29 (2024-03-06)\n#### Changes\n- Added `applyHangingProtocol` function to set hanging protocol by group and category ids.\n\n### 1.0.28 (2024-03-15)\n#### Changes\n- Fix unsubscribe get list of available HP for study event description.\n\n### 1.0.27 (2024-03-06)\n#### Changes\n- Added `getListOfAvailableHpForStudy` function to get available hanging protocol list for active study.\n- Added `applyPreviousHangingProtocolCategory` function to apply previous available hanging protocol category.\n- Added `applyNextHangingProtocolCategory` function to apply next available hanging protocol category.\n- Added `applyNextHangingProtocolCP` function to apply next available hanging protocol comparison study (CP).\n\n### 1.0.26 (2024-01-23)\n#### Changes\n- Updated `setCustomStudyLabel` function to set additional dicom tag labels for study or series level.\n- Added `dicomTagLabels` argument to array of dicom tags.\n\n#### Breaking changes\n- Renamed `hideDicomLabels` argument to `hideOriginalLabels`.\n\n### 1.0.25 (2023-12-19)\n#### Changes\n- Updated `measurementData` object with `disabled` parameter which allows to disable measurement from editing.\n\n### 1.0.24 (2023-12-15)\n#### Changes\n- Change log update.\n\n### 1.0.23 (2023-12-14)\n#### Changes\n- Updated `updateButtonVisibility` example to include mpr mist oblique and key objects buttons.\n\n### 1.0.22 (2023-10-19)\n#### Changes\n- Added `updateButtonVisibility` function to set which toolbar buttons are hidden.\n\n### 1.0.21 (2023-10-04)\n#### Changes\n- Added `setCustomTags` function to set custom tags with tag text and color for study or series.\n\n### 1.0.20 (2023-07-27)\n#### Changes\n- Added `setCustomStudyLabel` function to set additional custom label for study side panel by selected study uid.\n\n### 1.0.19 (2023-07-21)\n#### Changes\n- Added `subscribeMeasurementDeletedEvent` function to subscribe of measurement deleted event callback.\n- Added `unsubscribeMeasurementDeletedEvent` function to unsubscribe of measurement deleted event callback.\n\n### 1.0.18 (2023-06-16)\n#### Changes\n- Added `getInstanceMetadata` function to get available instance metadata.\n- Added `subscribeGetInstanceMetadataEvent` function to subscribe of get instance metadata event callback.\n- Added `unsubscribeGetInstanceMetadataEvent` function to unsubscribe of get instance metadata event callback.\n\n### 1.0.17 (2023-06-06)\n#### Changes\n- Added `subscribeAnnotationsSaveStartedEvent` function to subscribe of annotations save started event callback.\n- Added `unsubscribeAnnotationsSaveStartedEvent` function to unsubscribe of annotations save started event callback.\n- Added `subscribeStructureSetEditedEvent` function to subscribe of structure set edited event callback.\n- Added `unsubscribeStructureSetEditedEvent` function to unsubscribe of structure set edited event callback.\n\n### 1.0.16 (2023-06-06)\n#### Changes\n- Updated `setAdditionalInfoLabels` function to set additional info labels for study or series level.\n\n### 1.0.15 (2023-06-05)\n#### Changes\n- Added `createNewMeasurement` function to create new measurement in to viewport container.\n- Added `deleteMeasurementById` function to delete requested measurement by container id.\n- Added `subscribeInstanceChangedEvent` function to subscribe of instance changed event callback.\n- Added `unsubscribeInstanceChangedEvent` function to unsubscribe of instance changed event callback.\n- Added `subscribeActiveContainerChangedEvent` function to subscribe of active container changed event callback.\n- Added `unsubscribeActiveContainerChangedEvent` function to unsubscribe of active container changed event callback.\n- Added `subscribeMeasurementCreatedEvent` function to subscribe of measurement created event callback.\n- Added `unsubscribeMeasurementCreatedEvent` function to unsubscribe of measurement created event callback.\n- Added `subscribeMeasurementUpdatedEvent` function to subscribe of measurement updated event callback.\n- Added `unsubscribeMeasurementUpdatedEvent` function to unsubscribe of measurement updated event callback.\n- Added `getViewportsInformation` function to get available viewport's information.\n- Added `subscribeGetViewportsInformationEvent` function to subscribe of get viewports information event callback.\n- Added `unsubscribeGetViewportsInformationEvent` function to unsubscribe of get viewports information event callback.\n- Added new `Measurement coordinates conversion` documentation section with information about coordinates conversion.\n\n### 1.0.14 (2023-05-20)\n#### Changes\n- Added `generateInstanceMpr` function to generate instance MPR.\n- Added `changeViewportOrientation` function to change viewport orientation.\n\n### 1.0.13 (2023-05-24)\n#### Changes\n- Added `showInfoLabels` function to show/hide viewports info labels.\n- Added `setAdditionalInfoLabels` function to set additional info labels for viewports.\n\n### 1.0.12 (2023-03-10)\n#### Changes\n- Updated old `getWindowReference` function name to `findWindowReference`.\n- Added new `getWindowReference` function which returns last received window reference.\n\n### 1.0.11 (2023-03-07)\n#### Changes\n- Removed information about not used `freeDrawInfo` permission from example and `Update segmentation tool permissions` documentation section.\n\n### 1.0.10 (2022-12-19)\n#### Changes\n- Added `getViewportData` function to get active viewport data.\n- Added `subscribeGetViewportDataEvent` function to subscribe of get viewport data event callback.\n- Added `unsubscribeGetViewportDataEvent` function to unsubscribe of get viewport data event callback.\n\n### 1.0.9 (2022-11-08)\n#### Changes\n- Added `subscribeStudyLoadedEvent` function to subscribe of study loaded event callback.\n- Added `unsubscribeStudyLoadedEvent` function to unsubscribe of study loaded event callback.\n\n### 1.0.8 (2022-10-06)\n#### Changes\n- Added `getIntegrationType` function to return current integration type.\n- Added `updateIntegrationType` function to update integration type.\n- Updated integration type dropdown in example to actually update integration type in library when new integration type is selected.\n\n### 1.0.7 (2022-03-14)\n#### Changes\n- Added `getSnapshot` function to generate viewer layout and viewports snapshot.\n- Added `setSnapshot` function to set previously generated snapshot back to the viewer.\n- Added `subscribeGetSnapshotEvent` function to subscribe of get snapshot event callback.\n- Added `unsubscribeGetSnapshotEvent` function to unsubscribe of get snapshot event callback.\n\n### 1.0.6 (2021-12-15)\n#### Changes\n- Updated `updateSegmentationToolPermissions` function to support new permissions: `smartPaintView`, `smartPaint2dEdit`, `smartPaint3dEdit`, `smartPaintInfo`.\n\n### 1.0.4 (2021-11-11)\n#### Breaking changes\n- Updated segmentation permission `boundingBoxEdit` to `boundingBox2dEdit` and `boundingBox3dEdit` for 2d and 3d bounding box permissions control.\n\n### 1.0.3 (2021-09-28)\n#### Changes\n- Added `updateSegmentationToolPermissions` function to update segmentation tool permissions.\n- Added `subscribeCommunicationServiceReadyEvent` function to subscribe communication service ready event.\n- Added `unsubscribeCommunicationServiceReadyEvent` function to unsubscribe communication service ready event.\n- Added `unsubscribeGetOpenedStudiesEvent` function to unsubscribe get opened studies event.\n- Added `subscribeAnnotationsSavedEvent` function to subscribe annotation saved event.\n- Added `unsubscribeAnnotationsSavedEvent` function to unsubscribe annotation saved event.\n\n#### Breaking changes\n- Renamed `onGetOpenedStudies` function to `subscribeGetOpenedStudiesEvent`.\n\n### 1.0.2 (2021-09-22)\n#### Changes\n- Added `openMedDreamToIframe` function to open studies in iframe.\n\n#### Breaking changes\n- Renamed `openInMedDream` function to `openInMedDreamWindow`.\n- Renamed `addToMedDream` function to `addToMedDreamWindow`.\n- Renamed `replaceInMedDream` function to `replaceInMedDreamWindow`.\n","readmeFilename":"README.md"}