{"_id":"@team-plain/react-chat-ui","_rev":"148-dbd98e93602b83ae47026b3ff7574e46","name":"@team-plain/react-chat-ui","description":"Plain and simple React chat UI","dist-tags":{"next":"4.2.3-2ed5272","latest":"7.0.0"},"versions":{"0.0.1":{"name":"@team-plain/react-chat-ui","version":"0.0.1","license":"licence.md","_id":"@team-plain/react-chat-ui@0.0.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"}],"dist":{"shasum":"e33433c2179e1651d4410b4272cab34b17a3d5ab","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.1.tgz","fileCount":159,"integrity":"sha512-BlIxOW2s9gkyXjz2VSKWrid9kXqu0EgA4WoSMlbxK5ibDcplrwaLoSsJQJ4vSEUOBK9dyiHblcjuUi8f4+Q+GA==","signatures":[{"sig":"MEQCIHPHu5XT9328B5xtqjdsxUIGM5W14oDh8xnjiascTZkZAiBGpVjm/NITBSEqwA0B0UlKbTJbKns6mAi0zR3zvcYKHw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":352000},"main":"dist/index.js","gitHead":"65a176d47c626c5eb00e57bdadc058db1028936a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"team-plain-bot","email":"npm-admin@plain.com"},"_npmVersion":"6.14.14","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.5","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.1_1634912644409_0.27138519852470067","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.1-dc1cf92c":{"name":"@team-plain/react-chat-ui","version":"0.0.1-dc1cf92c","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.1-dc1cf92c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2ae403a1fae02839d8d6f9420151b8aa115707e9","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.1-dc1cf92c.tgz","fileCount":3,"integrity":"sha512-/BM7IHvjYGk8MAm1BfEaNquddUVuZk6DYLWRiK7h6FDH3EQMAd7HxsY3wlklNd7fRz8X8SsbE5+lbNsAWZRqnQ==","signatures":[{"sig":"MEUCIQCiliFk+elCSCQHqP09EHslX/Ix3Y6+o+takWPnlaNJ/AIgffAWIc556Db2BoRwGkU5C4jibMqBlvu4krAEfozf1+8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3398},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"dc1cf92c08fb9f3b13b6a895cee5e626d53bc590","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.1-dc1cf92c_1634915040842_0.6658434676923095","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.1-50327e18":{"name":"@team-plain/react-chat-ui","version":"0.0.1-50327e18","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.1-50327e18","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"55903889522c3d2a90aa7ccc09cfcc804176c134","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.1-50327e18.tgz","fileCount":2,"integrity":"sha512-CUo5XpCvS6jhIXb13VomjirPaCeQLV9K3m0xXrVx/E8l/r9VcsVAZiDu/DlKJzi2Ed+jvVTmNkRF1c2lNSgFgQ==","signatures":[{"sig":"MEYCIQCM+Cq9hJIsNPyfbu8wX6EaxPpPv58vPzx0Kp4l55LsIgIhAOf7ApenFkMx4JGOWaC6lutUQvNWxoc7F+il77WS2FID","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2330},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"50327e18a94eeb7a9f1465de561ca99ec0982d78","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.1-50327e18_1634917857670_0.006948371362607508","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2":{"name":"@team-plain/react-chat-ui","version":"0.0.2","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d6f730115bcf84b813635b879bfcf22f3793d173","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2.tgz","fileCount":66,"integrity":"sha512-cVx/SMWcBG1o22jbWfWoB1sVcp06z9Z7WqcyPiGfvOCT7cUpOfwRL7ZDWMmY74vPbDK7sCkBCk5VAGVEHRm3PQ==","signatures":[{"sig":"MEUCIQCEbuIO6ORQ9dllPd8vgnvfrFB4xhbydBAyMyfqqjSDMQIgMUAPbX0CGD+EWGxXKUdtcbAsG0tupSyp2F1zDjj7N64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148755},"main":"dist/index.js","gitHead":"15d20074167117cbc07b8b2ecf9b88406285abd4","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2_1634924019117_0.14484440430553658","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2-d49a6c6":{"name":"@team-plain/react-chat-ui","version":"0.0.2-d49a6c6","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2-d49a6c6","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"cd354955148783f3a4f3e10ada62e2179af74272","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2-d49a6c6.tgz","fileCount":66,"integrity":"sha512-uw6j2fYfDGOmflCmifLzLmPIo4TK6OEryKMX72OjuS7nM4My9GjLyPanoo+KnuhiGhC8U55j5M4ISXczAa3snw==","signatures":[{"sig":"MEUCIQCXMKVAl62Mjy/6MLACkfiwtOSREbeKI5e7xFCJwJvs+wIgQOx1JuGb5jD7lpy/+vrNYLCJEOqe5emcYxe1VKHo6rY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148763},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"d49a6c6b6e092b8c20c6a08c90cb862230e7f9e5","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2-d49a6c6_1634924463737_0.7444330651246822","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2-44ea49b":{"name":"@team-plain/react-chat-ui","version":"0.0.2-44ea49b","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2-44ea49b","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2e2af808a422f953d26945154640b95326da6d14","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2-44ea49b.tgz","fileCount":66,"integrity":"sha512-FMB0IEmoVcyxTUYCa0fPfIMSlSG/jTeiwMG2KLotjIY/BzEKNqWYHO/ZoXqKYo2vSaV5SyIGtKtY18QRplCsVQ==","signatures":[{"sig":"MEUCIQDQC+31cP+FlZsbpabuyJ7VJ9L1COK8+ZISwbVO1XdKhAIgLezU7YXzFaqkryNDiuHno752mFPyBbvdKTqUPodX6XU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148763},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"44ea49b4d113bdb5ab1aedfb322637f45faa1fec","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","@types/jest":"27.0.2","@types/node":"16.10.3","graphql-tag":"2.12.5","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","graphql-request":"^3.6.0","@types/react-dom":">=17.0.9"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2-44ea49b_1635166012851_0.9883072854851187","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2-7f47484":{"name":"@team-plain/react-chat-ui","version":"0.0.2-7f47484","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2-7f47484","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"025cef0e9658fc5a00143e35ccb6cc1e50866e28","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2-7f47484.tgz","fileCount":66,"integrity":"sha512-S1Ovk+0q2ZcReW27koRf3TikePDko7Jji0bd89oZbxZGB9Sj2+fplsnlaZHvgbiYRleSU8wTfpEybTUbSfyYpQ==","signatures":[{"sig":"MEUCIDHgoQZbfxzT4MbSc4MBW/PvJli44kDCd6/p/vXzAq98AiEA3GDqvDOgzjSp3ZxYuhGoAiva9cmWTlocfG4/hpDZWr0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148763},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"7f47484afb4da864d2ca53c590ab679eea67503b","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2-7f47484_1635167721013_0.43806592943580025","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2-fce04d8":{"name":"@team-plain/react-chat-ui","version":"0.0.2-fce04d8","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2-fce04d8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f17e4b6fe72c0a8b2aafba4b49b4a91c4bfc2d9b","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2-fce04d8.tgz","fileCount":66,"integrity":"sha512-l6xtt+rWAIoVPPo3hyAK5qfc4eKBNAMIrFX4/zVidGO+jKgpcQrIjSvqNlyqewjNJs9pue/kIPN7b8H6UuiCOQ==","signatures":[{"sig":"MEUCIClyQmoXfebfleYgiHMLhqrFWytpwQcq4r99BBfewUQ1AiEAtYPTDtH2YcaSoIxi8FVplDhEYtABR0Q1ObzdL9l7Btw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153528},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"fce04d8e6a7746c30efae6dc1c5f8f55f71e736c","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2-fce04d8_1635173050917_0.5137593269212237","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2-8eb4d66":{"name":"@team-plain/react-chat-ui","version":"0.0.2-8eb4d66","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.2-8eb4d66","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6445549405a0484ce825af8b8d1940187adb4104","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.2-8eb4d66.tgz","fileCount":66,"integrity":"sha512-iYJ2Dgiu6jksPiocDT3Q1Q6kjKjYGEzqCUbpqE4UXF3cx9b2sy7ur6OPNTVDXRpRkujyDFqvusYeFWp1TKVcIg==","signatures":[{"sig":"MEYCIQCnNCBE50046Iv53urDunvkier6+6QNNCcRrEZZMjZNyAIhAKRnhjsJbZuI9k78D0o0qYUAEDhSy67nsdCZF7WQijnt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153526},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"8eb4d66065db8e796f4d486fe3908baa1ebec367","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.2-8eb4d66_1635239096160_0.15443583920445225","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-068d5b5":{"name":"@team-plain/react-chat-ui","version":"0.0.3-068d5b5","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-068d5b5","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"cb39d098007b119e13979b8562587aa17883782f","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-068d5b5.tgz","fileCount":67,"integrity":"sha512-bLZXlIOYndJz/W92KnM4KeZCiXvMEQYJEW/Nz+w8/84NtEudbqrThzN9xojz88zKYHeU/3UGAdp3l1QGd/hA1w==","signatures":[{"sig":"MEUCIBo21xVzfRWf/KYgdUnWwJUuaVuYKz8xjZ7u7mGF3z3sAiEA2bAhlWFpigr2offWSjf9LuR3aexhNb4x9g3LEO7aWhU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153631},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"068d5b5f2768e2bac6a15845de21ed033bcbf1ca","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-068d5b5_1635243307972_0.7935874710512825","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3":{"name":"@team-plain/react-chat-ui","version":"0.0.3","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"577ba9d45710977e2069fefb8f1adf970d51806d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3.tgz","fileCount":67,"integrity":"sha512-WzY6/WgCzTxPhB8GvuQJIxLZ0QitOyELrX9bFdnnEu1Ci0Sh32woF2JDVima3M7jPp6jtfUWb7UlJnG5OFm8sg==","signatures":[{"sig":"MEQCIHW28J+PURFTNNLM3a73SFx5NZ95oZhMHoVf58+nvzwYAiAsVjh59JqpUeipP5S213Lt6DK23azIwIgtfjz/jhmXPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153623},"main":"dist/index.js","gitHead":"068d5b5f2768e2bac6a15845de21ed033bcbf1ca","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3_1635243320805_0.5731333737633346","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-abde9fc":{"name":"@team-plain/react-chat-ui","version":"0.0.3-abde9fc","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-abde9fc","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"170ff44aba7659de15f267178a3ec4352d2f8b2e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-abde9fc.tgz","fileCount":71,"integrity":"sha512-I03i7SZEx2PqFf2CrPFwqotr21Gn3U22HO2mhuStZ47iFkcw7hlrFFesMdEhH8JdlLL46OW1R2/mGbyRp1pHMw==","signatures":[{"sig":"MEUCIQDP3Vczjj8iVl4/LgwNJNyILC7IN730qy1iyDGE0BpZ9AIgKC71EuJZYHR2uJ/0rxt48og/QhJ7a4VYDoP4rczhe8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163885},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"abde9fcf91f37cfd54d31b42d508074b12f61adf","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-abde9fc_1635246089194_0.44317396041158297","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-fdf2446":{"name":"@team-plain/react-chat-ui","version":"0.0.3-fdf2446","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-fdf2446","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2d4a6b776b1d0bea708af0e54c2f65ed66cfd4b7","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-fdf2446.tgz","fileCount":71,"integrity":"sha512-pwI4ErqYnq2lmC+4p6yOfkwq+nF6Hm8sxTorCBZ9iI78VzchKxDBIX8yQlYa20gSPZf6mPLMEbfOGzm5zT8Sbw==","signatures":[{"sig":"MEYCIQDP5gPtokedUkpZ3AMi3FbhNKWTXE2HW3X8QPL+C6BiGQIhALsCpcwWwibV3SDyYhvTO76CbjNCicOrS82LpBfVJb29","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162279},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"fdf24462026a21d516bdec5bf70c8637bd6ec764","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","react":">=17.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","react-dom":">=17.0.2","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-fdf2446_1635246615753_0.27070657225722017","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-3bbb698":{"name":"@team-plain/react-chat-ui","version":"0.0.3-3bbb698","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-3bbb698","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"048ee64e18e28eb04a2c852e7b8c1875bb017ea5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-3bbb698.tgz","fileCount":71,"integrity":"sha512-64nWzZZVQlhfusGCYLwMahNIAe9fbIedBUYF9W/e7Bo5jkcMx356jznY1wHizybiOfFnhLVNfklS1KkVql2DgA==","signatures":[{"sig":"MEQCIGhg04XWfQjvghsxYJj2boEycYzje4e2l/+gi4VwcDv2AiB+kn+3xQHwNqBl/OLyP0FkspOv3Rjyko5iFX7rXvcoIw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162349},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"3bbb698a4d138b70fb16e28818aa93047d30192b","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json --onSuccess \"yalc push\"","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"^15.6.1","graphql-tag":"2.12.5","graphql-request":"^3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","react":"^17.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"^2.4.1","react-dom":"^17.0","tsc-watch":"^4.5.0","typescript":">=4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"^2.0.5","@types/react":">=17.0.27","@types/lodash":"4.14.175","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"^4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-3bbb698_1635252684140_0.9161811963420985","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-3d4d9bb":{"name":"@team-plain/react-chat-ui","version":"0.0.3-3d4d9bb","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-3d4d9bb","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"954e94b152ec113f54be4822f9f6e87a0532c780","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-3d4d9bb.tgz","fileCount":71,"integrity":"sha512-xl99sSmVaGzwThtSEvF7PeCZuNV0kK23htImt1XneFlifbiAisNz2nf/9HjRD8yJL8H9qE/v+a6BS9HsYdN75Q==","signatures":[{"sig":"MEQCIFVHuqYAFDgl6sDYqp2QElQNbYwKD+DhzFc54GMFi3sGAiAsgZrJBH1PrcjxnyI38PTyWweJIuDz0xUWa/vTdZUSbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162339},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"3d4d9bb4d6bf6f61f1ebd04f53f723085ce11705","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"luxon":"2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-3d4d9bb_1635497567160_0.7977098449294633","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-62434b2":{"name":"@team-plain/react-chat-ui","version":"0.0.3-62434b2","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-62434b2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"4d746432345508dca4a2986d5404cde9a36012e6","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-62434b2.tgz","fileCount":71,"integrity":"sha512-Nuc8wNE0STKyBWyX8PLMtNeuF+4OxiypQcnznhORNBx07HD3veGS7KHowseKjlHca5Yy4322rrWGk+Ne2dQj+w==","signatures":[{"sig":"MEUCIQDJFIg4sQv9sFe60kflvf1Z69bk9r7A9ubztBl1ciuoYgIgETzTrtuBcgrqFEl9JyCJVkYM8GX+aejxrOEq87uU/Dg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161462},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"62434b2d005d8633709f589e76b957462bc9efa0","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-62434b2_1635512552183_0.0013891988828562685","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3-7703fca":{"name":"@team-plain/react-chat-ui","version":"0.0.3-7703fca","license":"MIT","_id":"@team-plain/react-chat-ui@0.0.3-7703fca","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"9a21056584172cce90a9fa7a3f6eff6e618a7b5d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-0.0.3-7703fca.tgz","fileCount":73,"integrity":"sha512-0yLClfFVjKsOwNbA0AgRgK6tNkp3O5a3a3E4KImdkVDwS+mg6Wm3ilACDYojdBONtuiMCecYg3CkYY79r3CH3w==","signatures":[{"sig":"MEYCIQCxpujW0zUB+HR/RekSKpfmIeJLdodOFxjTvKSuM9ZygQIhAMUWVTPP8PrflDP64MJt7j5BWHI4B3tPMNjSA4ZieZ5a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161729},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"7703fcac215a6d212c26665542789ef58982203d","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_0.0.3-7703fca_1635516784901_0.8107717557518508","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"@team-plain/react-chat-ui","version":"1.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"1f874742f94355f6b815017855ba7b96feb1ae18","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0.tgz","fileCount":73,"integrity":"sha512-zTzMisi7I35wyqmftmfFT6plMouvRq85+BO8VlNEwtDog7QRHPsqW/upFkLNp5zqM/X25du8fx2AkXBMtnF49Q==","signatures":[{"sig":"MEUCIQCuwbDyABfuVimXGB3EiMx/eEjgCrORX3OvsjOtVkgF7QIgXkcG1Vk8lSRbXCz8yAbmY1AEY99NBUHr2VzolhIL2kQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161903},"main":"dist/index.js","gitHead":"68043a0db581001eec265e9553fb5935cc3bf737","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0_1635525650997_0.750554759851481","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-68043a0":{"name":"@team-plain/react-chat-ui","version":"1.0.0-68043a0","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-68043a0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"024d9de99eda86d2c83281eaf64ce5600ef14b13","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-68043a0.tgz","fileCount":73,"integrity":"sha512-7UwYW15jlZXLWzG9eKgzF0bbBP6dZL3TOk6W+G4VdaeZIdZtGHrVOTCx6GTTffPs8cwk4AgNq8kex1d+tBhahg==","signatures":[{"sig":"MEQCIHndYmKCNjM20psZQ6TVXlXjTZPi7HWcJOfT5b0Sw/GaAiBNIybqt5k1B87gHSqQ/z6udl0FNzWdDooaEKn57SYP2Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161911},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"68043a0db581001eec265e9553fb5935cc3bf737","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-68043a0_1635525652920_0.18392561749647385","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-2f3c023":{"name":"@team-plain/react-chat-ui","version":"1.0.0-2f3c023","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-2f3c023","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"79539fa5e81097b1a571bec01ff284a5fa44842c","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-2f3c023.tgz","fileCount":73,"integrity":"sha512-nnk3DAK32yDZyNa9lLnSFaoOq3Hf+JdobNi3W0HPszEu6uj2fooTisI1tvib613OW7jBCSq/HUBDGFO6EfUX7Q==","signatures":[{"sig":"MEUCICuChFjpoxhkyg6NCJeKn1Vx4ydEsn4CQDppVuPK+LXwAiEAqh84q3XsbAZadYhrRSRIJkhFJYyHXyg7cbQHrS/YNaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162027},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"2f3c023a6c2d30796c2dbbfa0137e81dff09462e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"15.6.1","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.0","eslint":"7.32.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":">=17.0.27","@babel/parser":"7.15.8","@types/lodash":"4.14.175","pretty-format":"27.3.1","@types/react-dom":">=17.0.9","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.1","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.0.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.2.1","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.0.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.1.8","@graphql-codegen/typescript-graphql-request":"4.1.6"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-2f3c023_1635776377570_0.3543416907153476","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-e31963f":{"name":"@team-plain/react-chat-ui","version":"1.0.0-e31963f","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-e31963f","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f7d6f7ef0d0ef7b7a41801e505be49fcf2040dc0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-e31963f.tgz","fileCount":73,"integrity":"sha512-gXo5V609xHiXbg+fG+ymgToYV3LZwujvozIUTYxQSkyFN6fFHwzqBcVwvAyHMm56p82OQzBfkUMiM7UW1ymoHg==","signatures":[{"sig":"MEUCIQCgYegogimtP8JekZ2lmTOyDve2JpVtAOJkwZxOWuC/hwIgDy5WU9bA7DiC1CsBcRJK6P1y1hHXM5dp7AzgBUTEfbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161992},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"e31963f714a1a3aa414f00db4a4ccd1ce093ac60","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-e31963f_1635788142179_0.28429865430013135","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-84dcbc8":{"name":"@team-plain/react-chat-ui","version":"1.0.0-84dcbc8","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-84dcbc8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"00eb6f9d1948ea9f30b878900478c17d95ea5225","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-84dcbc8.tgz","fileCount":73,"integrity":"sha512-6Rr6krTH4uSng6pz01CuwXy8ezHLwfMRnFHo1y477rRMIHPpEFt4cIocV4+t29py41Zf+qQha+tBvV5exgzwNA==","signatures":[{"sig":"MEUCIEScrZQ3OJPzwX21hhSAHY/zYlvq7Dj4AHVHknr4Ls/XAiEAofftaAdU6uFkGZUvTCar5JoOOIRlrbvhL3ZpVnkMcNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164049},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"84dcbc89240fdbc1844969f0f5e34d6e1b0d959a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-84dcbc8_1635868981961_0.3356876089827443","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-7bbf48c":{"name":"@team-plain/react-chat-ui","version":"1.0.0-7bbf48c","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-7bbf48c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b96348a4ca7c3b6ca94ed148edf1d194428d6ffa","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-7bbf48c.tgz","fileCount":73,"integrity":"sha512-4oKXmtopa9j5RRgBKUaskEcIs+lzfE59EN3EeCVMDsqdlu925ulSPOHc7AK5GQM1GpdlLaZOsA7jjKSeXb7k/Q==","signatures":[{"sig":"MEQCIDUaECVaadZd/wwtlqvphB8MyFZrGTyzxGC5l6gl7/w0AiBN0qXnlIuxxDlWAUKYJRdDbAGRkpyDqhQ0Jqw9nl/6kA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164397},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"7bbf48c72f6a2a29db4c7dab873e2ddcc60941c3","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-7bbf48c_1635871942538_0.7837816432232914","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-fce15e8":{"name":"@team-plain/react-chat-ui","version":"1.0.0-fce15e8","license":"MIT","_id":"@team-plain/react-chat-ui@1.0.0-fce15e8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"fb7514481d4603319aebcc45181c97dc785ad78b","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.0.0-fce15e8.tgz","fileCount":73,"integrity":"sha512-qx5xttKYOLvWJ758wCBdZDZ2pgmM9ebq3oI4dTdD/wxcukskac2pP0fn1z8mr7kGDF1/Atth51cI88bErSc/7Q==","signatures":[{"sig":"MEQCIE8sZHglNAQ7wjkgk9yv0v6j5K4qf1jFQ/11/lp8p5iRAiBjs7yi3UKuaGueXU/dl/rshPqgIk2954xvVjUxAB4aBA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164701},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"fce15e8bbfb34493fd76daa6f841777b8620f422","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.0.0-fce15e8_1635872070665_0.463689562847883","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"@team-plain/react-chat-ui","version":"1.1.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"05a783008d8c1d9c050990fc0d2709759b570c6c","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0.tgz","fileCount":73,"integrity":"sha512-x4DxnM8XwNt+ZoI+MviGTVuiCHuhSQCEutLErzXcnAnDfhLdSzMDUN0xAq3z755P/LL08OpUGLyyUpWRhK6Kpg==","signatures":[{"sig":"MEUCIDRxad8GPr4XDHhmi9m8VwOpICnmhvfn3iQhzLhlN2y0AiEAnI4DE3RFpLuHhE8QqqloMGp+vXEsQ1f8zL8BbGYMGbg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164893},"main":"dist/index.js","gitHead":"f2a7add29a707e3bce1c61574215b50ab4faa2d1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0_1635873211159_0.9655230440029892","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-f2a7add":{"name":"@team-plain/react-chat-ui","version":"1.1.0-f2a7add","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-f2a7add","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b8b9b3c25c606bcf3377071b7a95ff684cf99966","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-f2a7add.tgz","fileCount":73,"integrity":"sha512-QVrqR/DtuJ7hBeq8TSCFjcHMB0vhp29Jb3BHRgJXHsTG93IfSJvGaAI85eC60VU63Mv1NtDiBRU7JoIpvDeFwg==","signatures":[{"sig":"MEUCIBcL0KG7aSFEGLIWFkaqt15B1Q3DmbtiTIR3UIX7Ko0SAiEAxdvkHZ3ROEcvhS7rx30RSnl+4la1dSO4bili0cF2S48=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164901},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"f2a7add29a707e3bce1c61574215b50ab4faa2d1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-f2a7add_1635873214177_0.7269781403101883","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-9f924cf":{"name":"@team-plain/react-chat-ui","version":"1.1.0-9f924cf","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-9f924cf","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"fd3522654ae7fd49eb13d7b2a0ec469465cca0e6","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-9f924cf.tgz","fileCount":73,"integrity":"sha512-Peb070WVoP8Ebp/puIYrONJrrkGl0RTJlcnJCun9Uc7/2JVbbRlI+dfuZ1T79wX10J/SNTRxuooixmiHgiEKfg==","signatures":[{"sig":"MEUCICXeEQZ1NiMtaAkgM93SnFz6At6l/Wln7GKg5BObDpazAiEAmfUUkWW/0KG/BkFYYJS/bvWdXe/gDFlppUAU75ZVH90=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164893},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"9f924cf15c45a3ae904afd89dc42a377d20b39db","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.0","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-9f924cf_1636034624792_0.8161929451875523","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-5efd0da":{"name":"@team-plain/react-chat-ui","version":"1.1.0-5efd0da","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-5efd0da","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e9141c989e42d9f75da9d3cf732e026000a84274","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-5efd0da.tgz","fileCount":77,"integrity":"sha512-FfboXvGAJfpVg6RroGGLceh/R9/rschJwgIZS6dXZ5vIFDxLgZyNa0Dlmb/8ETUgk8uQ5ARl/yQH6eHI3e8DIQ==","signatures":[{"sig":"MEUCIQDS+EiWddGnYKzc+VL6ssG7AnHNct8gzjUwV/cXh7u6pAIgWAYNFSuxvbphzwFDQ8w2oI0+iysfhHqJByTJFdxdnSw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175436},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"5efd0da76bdfc4fb5da6d5839e606346a0ee2ca4","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.1-alpha-255221c86-20211103","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-5efd0da_1636102557984_0.2485566997807147","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-2da5ae8":{"name":"@team-plain/react-chat-ui","version":"1.1.0-2da5ae8","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-2da5ae8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6012a849acc57c294186eb3094a13aa4d35f3cfb","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-2da5ae8.tgz","fileCount":79,"integrity":"sha512-t/PhlZi+DKE57RcPNvElMkByR/tXyQdb23guUFzLsBhwMXqfzjxzHMBw7yuLiBPBsHtW9EAIcGUjzJAMP7HY6g==","signatures":[{"sig":"MEUCIQCbqbO3XioxJMyPWUTkJYTDgR/OavZ6ytz9nhXNHiZZZwIgEjFZxPa4PMEEzerXjR8Mk3UcUkP5iTLwOBn1KL9pCnI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176312},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"2da5ae81929f3c1c800997ffaee2842fb70e74a0","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.1-alpha-255221c86-20211103","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-2da5ae8_1636122666671_0.9974242212916467","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-09a77e8":{"name":"@team-plain/react-chat-ui","version":"1.1.0-09a77e8","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-09a77e8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d319ad7fdbaa178f38fef5f73d6935dbcb313896","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-09a77e8.tgz","fileCount":83,"integrity":"sha512-sQFb4zc+cocLz0aV9V7hp93WZuP3exoeb4yNV/KiexEGDljbqq/oVqyZCKdQl/RKqAOb1/pOepzGbU2aDxE6Sg==","signatures":[{"sig":"MEUCIBXwHn2zQg/Kv4OC45L1ijchz00ZOWCqYPyGgEKUAlvWAiEA/uCiVh4w5gAV57gtGUhD91zRBX5uEMYSdj1t8o8pQvQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179589},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"09a77e8a1237506f24d80ef3f344d91379f8b3df","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.0.2","goober":"2.0.41","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.5","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.1.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.5","@types/react":"^17.0.33","@babel/parser":"7.16.0","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.10","eslint-plugin-react":"7.26.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.2","eslint-plugin-unicorn":"37.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.2.0","eslint-plugin-react-hooks":"4.2.1-alpha-255221c86-20211103","@graphql-codegen/typescript":"2.3.0","eslint-plugin-unused-imports":"1.1.5","@typescript-eslint/eslint-plugin":"5.2.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.2.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-09a77e8_1636537873559_0.6111312806132212","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-4d0572e":{"name":"@team-plain/react-chat-ui","version":"1.1.0-4d0572e","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-4d0572e","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"7091c5576d2fd7874619b2857231ccaf4659e7dd","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-4d0572e.tgz","fileCount":83,"integrity":"sha512-Wu/9UsMM2aC5c6aYwm9evdXHdX5pE4i7/miRvDCwNtJ+Zgg4wCqPLLmjayB532nSURcHQhsSxePBOf2lhO8Kdg==","signatures":[{"sig":"MEUCIQDkGHrptqoBxBMPFhJpM0aCOy45gUojPdlAhkUkh1ZHYAIgIFpi5KA63GuBw1iP/cp+5En6TJzHGk4DkhVOM8DBYpM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179564},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"4d0572e948f7f4c5f287832f1d2113fa000da7de","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-4d0572e_1636970514624_0.02241887715626789","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-fd5580d":{"name":"@team-plain/react-chat-ui","version":"1.1.0-fd5580d","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-fd5580d","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d3d2aa8a159c10fe4dea2c14b8049bfa3775fb80","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-fd5580d.tgz","fileCount":83,"integrity":"sha512-I55jW0NucGQxicvn2AurTApFNyZEG3S9GBXAa0CCWKKh4avfnSfHo3hWAjmr1RP34M/aZiBMedgQsqib1faheA==","signatures":[{"sig":"MEQCIC79htLrLrYwcI2+HLxRNxRrSSOrySEshNT/uRSZ5f9ZAiAL8nWI+XirzIvXpZFcMKGZUqw83HsDe/vJSHkykJTaxg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhk87TCRA9TVsSAnZWagAAZeQP/01LdxiyMeF3HcBPuTVb\nOkSbo+lMueAILRPddMCYG/JxdTllDzbjmNXMp7zmPvHgkBFHA0TjJnEOXxMH\nu5UFgb1DutGdDb0LuAO3OpOLgsWmOriXcbEM+7EVjKh3B6G3iuuUrLH0fNMW\n3/1Etx6pnqccixJfRZ2Mp8JQQT9fnIMXieLvYoFJiw7nLVHOHifBrRgKW3+d\nUBwN5p0p5iPO9Pi0luzbD66Ye9XOfO9UdHBUz6kH4kBqefDA0L13AJ1iqxDv\nzx9vhGpGtrc0OnZJATz1RAp93kMEe3DXxc+y5nO/N+kRyPA0/AXtDKW+e0sJ\ns8ITcQC9NFYXwGkf9NsGCYkYD6XJbXwVDa4k22koN/pRrISK9BoScn9fH0z5\nEIsECUWmfalfDDpwTjoiveZFNXY/8kuons+hXAHdf1T5AYIyNXhL0UI1tFMe\nkX6kD1bexemjGId2gu0dMrqTM3GODiJPNgImn9QeM5BElzhlLB+4Hua48h8F\nV2pzGvXF3CCeKrD7oZ0dSl2Hnha3BAqHhOJtSLiZHCJ28x2F1lNuP0gxbNfi\ntFDf4snlOl5wwxDty40oqRkQlCbdEfq75i3Y1PMjI4bbilGRQEpLDIUrewMd\nY7c6KKqgSvrlRaMEBMSD8nfgBWZhI1Owp7negYZiWf+H4geMIWu+5WbHKAoG\n2nb7\r\n=t48d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"fd5580d1214553b741923155300c16e92a273278","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-fd5580d_1637076691639_0.20260914155970755","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-0ed822c":{"name":"@team-plain/react-chat-ui","version":"1.1.0-0ed822c","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-0ed822c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"7977f3ddf5fb54d710bc63e52126ddc956f11fa2","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-0ed822c.tgz","fileCount":83,"integrity":"sha512-lfoJckywrx9kNOPD30v/lf+5ErKIR8nGexmrp3oV8i8h/CgV14CyXESkueJ2bEkvVb9qN/1ut+tIKbT/oRTMnQ==","signatures":[{"sig":"MEUCIEO++6Id+Lh+V6rkggSmdw2Z5TPnX03gYG8JLQ6hvqQpAiEA7YuFmWkDAJAFr+bDY9YxeMeERnDXXLIJkeny2hEoyFY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhk9CPCRA9TVsSAnZWagAAwsoP/RMDmtiuZjb6vCJ+t1dd\nktYTDY8cgg/z8cCzGYWGc76NImPVFQMZjhqp4IFwcBtRTcbHs+gNenNTR0+u\nfIpDWAP9uEF8Ln6jP3g0erqyNfYVgNmlwfZJEv+XBuCpe/Zw764AaTfHHFju\neBkSjW/55MmNKuQ8kLJalxXV+W0Zd98HAt/FOQ+ag4BpTNGWhnj6rcWbNpFB\nwx8zCKWO3WwwG8wav9mEBuvM+D027ryr/aoAiZDHNziHoxFMRZpMPldYvbSk\nV7dztQR1SIGwBMNuF+u7AOts3ReCmpfnepaVppYazUSOU/SIy/eqAYb75tSF\ncfL5OV1U59vFHXaWZfLj1zk2iCxwhaZiyiRLzeg63O/yANnnkf917LpyxZhb\nmaht0JwzRaf8jj7nnKF1DkcefBxl3293u7hQIY48oU/6jPlkLQcq6957/yW6\nRyuwFDjkDzsn42VYqobOEulA3a+WxhaJMrF6a6DzGBKYn2yrIed1M16DkGgR\nc2nhu4B0FY3Q5DlslVWd6jUPswZ2AEwWklxeFgwrvDatHweI2vCDGJ7PPecH\nzFIGNsODB5kfMPR/C944eo0G7mTk7dgF99xy8pc1AQoEXjRab46Kr2LNgzh2\nueU+zzjYgxGqQRID919CHXbOYYlOj7iHeEBjRzhOh4qVr+CcJDs5emMVLe/k\nHT2H\r\n=X0WC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"0ed822c66d660584a5e29a382ef52bb0df2fdb65","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-0ed822c_1637077135667_0.9024371644968212","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-4c5bdf8":{"name":"@team-plain/react-chat-ui","version":"1.1.0-4c5bdf8","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-4c5bdf8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"5d8a2fb5d280f0a77bf6c3e39fd79bfd152c1ebe","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-4c5bdf8.tgz","fileCount":83,"integrity":"sha512-jk8ELdqeo2qFz/Sd82hlaKCfw3mfnOQ6qoEqE4mLQn1Hhnx2j+NoUDMs7dQzAyi3dIdxAfgxR2rYdosziK/XNw==","signatures":[{"sig":"MEYCIQC5ROK766vAylvppnDBnsk3FABozq1NFsdA57MhZFSBCgIhANotmo6ReWzx0o5DmAYdkGMScKaZ0bHa4pt/i7xmMAVB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhk9MoCRA9TVsSAnZWagAAz8QP/js0cv0FB+UIfJ4Ji0bv\nGXwww4C5YsGBZUBkBvByQXJRSRq96d7mOPM6gP13Da680haZFRMnN0xsr+kp\nT0OYEFp3N56hYErfBkRj3sUJkgCYciID2Oy8W8+C4sE7hg/ybaR+khBfKhck\ntBVs6VDczQ1nOvuWRC+SAUNwQWInQRCwASJ+sP3tbIcy+jV51F3dmqwLvupp\nrk0ibsJlpj18WFJj4n93wMy82vBtzgsF6ibj1+1+HfAacteiv7WPMRWR8T2l\nCL3U9ZhiXik/gh395W8Y1LJjgK+R89u6BRCkRCIssJImqC+sup3oXfQE4aHB\njeZynIjvcbe6IY6tnSCkbqLqYCNYLFe5iBJMFE2WqAYSBbqBSm1nO5CZIVQb\nfTOnyg2mMUYRmfoZl+ShEa635/XxThcdcYrzJ89qUxWG2lzAhFqpc+j4ll0l\nGdi/F6URRl86/fFWtRKOMych0z7h1mQUIieiuzpERorba3hiumY//hj8lfQF\nhPG5TgfRzqH6FaV9j0rVAwX6SZu2/zk7adFKO9Wk3nW6LXjKLzejBZJYOXNZ\nSlxzYLJW4zfO/vKhAqPJrz3n1lpOM7dkgjc5NBlQDkwzfXKMyKmgqjiuLMo7\nNnKTG2SNMpCknsoTuE98w0lHFFmmLdF2onCzRbqiLXym8h/dCz7zRY8oc19d\nBUWa\r\n=E+aL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"4c5bdf8064bf4012289a358c169c50ef81b66f46","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-4c5bdf8_1637077800593_0.5774926977891996","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-d5f764d":{"name":"@team-plain/react-chat-ui","version":"1.1.0-d5f764d","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-d5f764d","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e182b060a73ec3f94a8007cf1f7a5f98db78f0b6","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-d5f764d.tgz","fileCount":83,"integrity":"sha512-g6Yo/hU0rxDl0FZ0cIxn47LYV21ds6E5fOJARtEGsHwl9NaFnc8ROkb3hwtyo+e3jq31B16Pw11HHTYG8E35jQ==","signatures":[{"sig":"MEUCIHTaC+JjuClFcqZaE6lMzMRyCn9VBbXWGeqcZdRSJWxNAiEAp8CrxtyVBduIVpstuzaZ80jKgp3sQqfwQy+1dGxKqvc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlmJ1CRA9TVsSAnZWagAALlYP/jgLAgkHWvkW6I8szSl3\nZ4fPvbLaDk1i0uY/B8IQZuRVS+UVkZnMhyJ3nB1p3Q92x4HfV1zj3H8Z9/TQ\nUqFJfXQap85Lx7opEE3m4+wKNARwILX1Hm1loW3RyasJHv2FcVlFyNiAsFb/\nL1KJPnRpRFonZyxySAlSwUTyrEKWKYKHtQPZa4ZhKI4VJVeR6kvbLX1AE0cx\nWeKIEggcewfZ5gnHuPCzis5xoh7OvwebgQwf3LcVlhkOdckCTn6c6GYn4qvE\nU6vebwmVB96r2Qiv18AnyjsY/65Cermd44/dUc4qm3qeDK7EjdD4Ojz3h0S0\nPxeT6f6N/4EnAaqjAuoODDqT+o7vUhl6hm2nJryigPDbJN1ac48llsxB/fcV\n8YMsABlClhmJeuIyT4N02Pyk4q2Itrf+5xHM2Ct3j5QO14Zc/arLZJThtveW\nPMGcL7p5+tfOhTKpJ6v0jwo4j0058FfZxWEzv/StOuPvo0OkrRPvAbJTdFon\nxUL5P7PSW+oM1pZHg7YhF0vCzC/gZ6mcNRHxtQcHe37dm9HFq/gsY3pT9OEq\npEh34FSZ8JKtlFCTLseQQOac2NTbUDz6fkZ5x/2MKUT1xJ59aETyxl3HNxSw\nmxGP/hSR4QNWpGJohl9cCJhkEriO5alPbOHsxPHRmEk1JoTf/NVDrVVTF2+s\nqgNZ\r\n=1dIJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"d5f764d0563ad78bba0f22df8661d82af8191300","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-d5f764d_1637245557142_0.9726801224817971","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0-d97b0b9":{"name":"@team-plain/react-chat-ui","version":"1.1.0-d97b0b9","license":"MIT","_id":"@team-plain/react-chat-ui@1.1.0-d97b0b9","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2430a94e06c6bdda0b5c645d33a62873a0ca357e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.1.0-d97b0b9.tgz","fileCount":83,"integrity":"sha512-QQpr9+6bo3TKmGUQNiINL91HVnFy7U0qTkazxlM6eq2lAmER2B//qQjxPO3DbYkobO0bPeAqhlJOaN9Tz2xsKw==","signatures":[{"sig":"MEUCIHzP+SQHuOz86aGFAva4sTwzEyNuZxQhUkmKF9enoacXAiEA3umcEbGt0l8PXQgZuPHdIDG2W6N7eulBAV7+m17A8eE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlnKbCRA9TVsSAnZWagAAsjkQAIxtyrkRHP05u6ReoHL1\nmohDktroIx5vxiJ2BXWmeUo78n9wgZ0nhbLo88BOXHmwED3WLhAHktP7MSt6\nPoJH8q7CvhdiLSONZp3xdTD/BZVIeBsmxfWLPugrk6igEVSKz+XQy05be5Hk\ntddy0cRHMOS9maPi3nw97celjgp/aAH/ouQAJEeVlee7A0UHtea2I99Q2K9O\nSCXufN2eDmlc5zBAH+u9LFsn+0Ry3LaD9UTPuIOgIQQWODD803PCX0uyJ395\nOFStUUaxPwJxMWkpmfutdyeYkO04Ww6AAb6SJAMsLg278tWt7loe7fkaaS+l\neDkUqdZzaKGrvnxO24K/u7zs6pbSv9rh6gCeGvGjWnYR/Fe7muTO+brwqZ1u\nyb0tyhfZCklt263TwJ34Js5dvj/YIY+WbF1SKGwdXH0WxgyiEVxMq8YE2+AG\nhCaJf8bEjRrt0MmgcF8asGXAOqE2cifVWw3kujQcS53N689vA2w8uOTRy2mU\nbK4vlh9AWGZ5nfI6v5Nda4e9CyXTc98euX5r/L0tjjffyWts3qQotnpubTQl\nzu9DPxfZYkXFm280e+WjCCfux5u/82hi9/AhObcJreeJ2XgLT+YC8CVFvl3K\nVE33iyjCnLJ2Ldemmo96GLyyYlhSWOxcElSPkcjdzdNpnKno9ygF6xonowFY\nmeZw\r\n=+Qam\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"d97b0b951e0b9eff2f6e138256f0e69b8120cdb8","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.1.0-d97b0b9_1637249691008_0.9558443945185193","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.0":{"name":"@team-plain/react-chat-ui","version":"1.2.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.2.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"24abe649978c471c1f09db914e29521566a878c5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.2.0.tgz","fileCount":83,"integrity":"sha512-7AQ40Oj37WiWLzlk5ERNR29NaMV/mYob7ENtNEYcBzs/c49Onjb6eFe2rXgkYq5+qzvaz6cIWq8s2X46Zb5akw==","signatures":[{"sig":"MEQCIEq3HViYUHUsqJq2aR9/97nwqV8LnTQAhWHgTsvQ4QGGAiASb7zAX52ffJeRpxozZQcs9V2bbIs9LlvhLJxhiGoeCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlnaICRA9TVsSAnZWagAAvYoP/0wrLHI4JO8EZuY1Qbb7\n+gqU1m4FO4ifMdEBnWhmeQqDCc9Mn+DAiVD1MHFSb7ElbFJmOSDlKO9WF2JA\nG2d5I6LCaTGhT680/nkFI6aInYQAxd2dCRwHTLHx2sMqcSgxmWyZ7OlHO79/\nOZ1P8kLwxzyu9fWg+yruH37jyTvMs5xiu2ElpozsnsWAQsYo/ihkWAtL7R5F\n8YZ1FXaY2y1D5NLXNM8XYM3OOvuvkE8pxFiu+4lYAQ8T/S/4Lq2oXsD0YqDS\nZvjy1SR7hTnChzDZmXPbfNpdQgNbchBwW3kR5Nj0a9kLAomck/wNLjEUXqUb\n5bghkA6ZU5OZrNPmipgVvgOlQi/RuIbVxHGKaLwnJ0OJ1wdLq4xuDubbOsUh\nqsrF3J1WIcEIx3oR/ZhiUOiZ8zPAB2lgZGtMoKcJc9mGYPicdIGwkZm4cxQd\nu0oTt8nlT2K2NbIb2kZfW4cjO8h/HvfWVnEm04kZHDtgQP5wsjOP7/7CcCvn\nxormojBFVTX5RbmNxw+79CWFYYGDTi0MeNyjWXZ8NCrQSmwMSdFRuUh1FNd8\nTD08wrjQVOB1bjrmgNo6qggtkg4HUNXoj73VHC0gRwXBy5SZKMPpTHSIJnil\nM0vxdzPdIPc935WwDiritk/iROKrcNfRIIeXiZTR+hwuIYEW2bfV1F8uhHYV\n0VpW\r\n=rRdE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"d76dbf4eb4703d94a809a1ae0a8a99f5a142cc81","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.2.0_1637250696563_0.9557231749175175","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1-0e64e68":{"name":"@team-plain/react-chat-ui","version":"1.2.1-0e64e68","license":"MIT","_id":"@team-plain/react-chat-ui@1.2.1-0e64e68","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ce320071f331850a87302edf48e5be74b8395f37","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.2.1-0e64e68.tgz","fileCount":83,"integrity":"sha512-kf4dacroghxAIWIPmih1ykm17n4DZUMXOcSZlrqBrBIzeZpUjcFNqFLyncL4H78BAe2DDxm/Y3bxo9R3NR2qrg==","signatures":[{"sig":"MEUCIAQ1q4SLUD64cIkUOe4KZrSM97qOkqZ6nZZ68ZFnLZcxAiEA9NqaliEw67voHH3W96AuD6zDJgEK7uZtWcfygEJdvsE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhln7SCRA9TVsSAnZWagAA41wP/jLNNH6SgwqsNN+crmr0\nVGf+b3BFymAyRkmhg9yoTaop63xevB4AN+Lpnu7rAWE/jR4Tn9e0hJRfhs39\nDwHMx2GCOGtZEj7mutFu9j5EqSXGWjwIoSvR3DULYzo2ZVJfbkj3R4IGEZOC\nqHezQY0fi5N0cyAN6GiSmO49F+b8pjqi4JfYgWhStiawuXeJ93MyqzR7/2KP\nWpSMLaQOPL3ws32SWjqjsV/x1Y8VvZwYW2W8CnN/Yqflq+3nry6r/XfZ1uDJ\n1dGsHvQJFXpeeb5HU3Q8byevoCrw1jz4GWr8BdobzgsBWpSCAgwzZP0Ct54O\nj3NdsTKCQpcN0lCiuzjykdt6fZ0MBTFB7qtjvBk8RHur0m7k51GtoGdWEVyu\n+GS1sUCOlP8T4j381ORXV7L/v+hLAjj5J6vDG0nbltm1bSZDEOA3rXm9p77A\nzTRaaqJgHcmYsz3VdL8Gw38bUoGYBBVCyRbuKPDZ4sKYw64X1lQRvZ1aWeW7\nCBX0xMGbXMoEQnzeT64UnEXvBEKKWezVzX32Uqw7kx2X5Mle3sqH3LiTzPNA\n9czgdwHTJCEXjLPuW3dd13RqeT2yvPK3mZ6Lbt3W7fpURI+1WmwgbUSs0TXd\nvavzn4u4SsvNTMX1ln7vW+yBAGcFo2RIM20aayDwWG6yA62WcyYxAIwNMIeu\n9Yro\r\n=No6g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"0e64e68f455311d9b7be5169b11b4c78f85f9ea8","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.2.1-0e64e68_1637252818004_0.8311266348947446","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1":{"name":"@team-plain/react-chat-ui","version":"1.2.1","license":"MIT","_id":"@team-plain/react-chat-ui@1.2.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"414ced8257da3b8fce7caefc33ee08e90095072a","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.2.1.tgz","fileCount":83,"integrity":"sha512-Hxi4741kWevQPaRyzST6DYzeSnwdb3RunZaC1YR/z0AoaHf9rnfCK1Kq6IOHjWavbcLu5Wt/jEhDKNe1DpQJQg==","signatures":[{"sig":"MEQCID/h0kp9ecrq0xsBwuQnMPTvMDfWNLIbS5AZPn6lvLLoAiB4C1A5XTmDO6PPNLtHKdQSRXca70CM/8AilS/Bq07akg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhln7YCRA9TVsSAnZWagAAXeEP/jR4yNiOKmd9GXNSXXnA\nc/jHEPuQxmnRV2sYluL4MvN3NGUkA3C9uJsAWQMEx809b/NlynN0cRq2tyTx\nctFJK3HB1eFIGaHBgX+tNmV7KXpN52xm6LaBEbqSBvzLGFS31f7JPW1rv/Qq\nBujSXZ7zGWUZVz/lE8XKLzCoYCv6P7nRbed7blj4QoqqnbiJs3ADha7/pj5j\nrWhJifvUuJCPNTnOZIRIjC2SR7icvkRpKccPaxdSWT7t8TCz44kPv48Xx99q\nwTSpkgEXImy3ej6e+y+PTCbnJkgaOApRgGZyuA5PVjpotxzMKCx84N2LWlHA\nx11ckMTT3WDjGxxF/IeMaOE3wWfEtkX/lLYyURiv1gPggAfRZ14Cm3MfjUuX\nn1gs4ODzgpjZlYY6nMRrNnxs6YsbpTwhO5DdnfDey9+lpo/4vYJ9XAyiGZMJ\nKKjIHYsrILclczjbAuzRzO73b0A+3XRGTg8bdW7Fgat8lWy00qnc5suRB8BC\nfOMHlHaHPpUhwcubUtPVItVTEl4XcQU7CEiAthaRy79UT+K8+m2MkmzZIqlp\nA4zU+614Btc/OhSlliEPc+JGJE9BNNm9xdrDj+FnBagQPPKCXaRCsN76Uku6\nuqWyr4dkiYhDnJzySrtA/dlgIIuHaRo2iFdYri1NSVFNdDhvH4kR2xNJ1ut5\nNxVJ\r\n=Icf+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"0e64e68f455311d9b7be5169b11b4c78f85f9ea8","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.2.1_1637252824104_0.6507694229094128","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1-3630a53":{"name":"@team-plain/react-chat-ui","version":"1.2.1-3630a53","license":"MIT","_id":"@team-plain/react-chat-ui@1.2.1-3630a53","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2ab2b0b799b3f081506505e347c99987d8ba6909","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.2.1-3630a53.tgz","fileCount":83,"integrity":"sha512-hDN2Eabtwzcm+HvrAuGerTCgVyCm3hDIWD5Wv8vNmTghT+IyBU7RK980soaxpQy+LD8sZMw0i0/orHShsm+z5A==","signatures":[{"sig":"MEUCIQDKU7Jznp2FtlzOR74IVEIq0vUX1NLammosxi804/a9PwIgMobe58hig/ts2qGsxJ/+8bkDQf7/d2GQ4KsajTphS1A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm2eBCRA9TVsSAnZWagAA1UIP+wYyU1M8nRe1nVxEGYQH\nJwjBt+IfLRLSBBVBTtzQZAYh7mZEdgW0ux3HnY0L4EXIn4Ii6x9OdPGV/cVi\nLEuVShUSNSomDwa7Ie+s+UZdmx4FgVi/ii054ED8EtwUZNPKGXKjplm0jL/a\nnFYVOVxFJFD2xBGk21xfCVandk1erQn6XSYyCeDrIREg7bXi0Pmol5m2EHH9\nDGAGWE0L7yTk2GocooA+vFDjSKb+6sGM7SDlaopomCOBt27yEUI8UwNfXVdW\n9edRJuFeZvOSSSqMjs76CE3Lka/yJPUDTo43TD9OJIPADlMEeyxsQ1x9LzZR\nk2YqGJcTJqoRCjtjAh5+zdA8vFBYWLy0PFwXWqTajx6NV3HLKXFtiF6lkmyZ\nXg72mTerbgQeNJ6GEnOVgUciUWZbRlEfHUJQf66kQwQ2miTMezRSQVpY4Ah4\nODDWegFTgoDF6a236sFvB+Z/ooWRQqJ4uDymcDxsAXNZqH7KXoHHs16xCdmW\nkVXllv8U63TS2gxoNnZS0wX2SYCmnixatcvDysqW0ef093L93PiCp8ileVk7\nojaalftFxAcHPxuzjYG9mYsxv3SEiE/Rhc8MA0NXpC+nS39tWpy022PSIP8+\ntJu6olzrHPeTHYZmu8SfZnmgl3hZFCQI7ldSBpP7TBofwvJHGshlqypOg31i\nCuxb\r\n=jGvx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"3630a53e343b8d31327546b23e8ee22d62d039a0","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.2.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.4.4","@types/jest":"27.0.2","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.34","@babel/parser":"7.16.3","@types/lodash":"4.14.176","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.0","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.2.2","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"38.0.1","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.3.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.3.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.3.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.0","@graphql-codegen/typescript-graphql-request":"4.3.0"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.2.1-3630a53_1637574529232_0.9156942041901319","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1-77c142c":{"name":"@team-plain/react-chat-ui","version":"1.2.1-77c142c","license":"MIT","_id":"@team-plain/react-chat-ui@1.2.1-77c142c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"57400cc5eeca221a29d74b88dd58c85795c0c2cd","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.2.1-77c142c.tgz","fileCount":83,"integrity":"sha512-DfJobxfMrst5aDuZPzHYO7lInWkzeVfkStYA/zFljen0imXOVjasklJFG3k6vgQrle4lFNXa2XByr2b1kR1WUg==","signatures":[{"sig":"MEQCIFt1WPFihB/bYQ4m6pkVyAOhTss9sPrSwR/aT2+HRPxYAiAPHKrPtDu6lWK8M+iEZBMMDm8/xp86pqTRbdkvXrcMJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm2iICRA9TVsSAnZWagAAXU4P/3t8vpxCgCXeSoeViWP/\nIFJIm3MhGRm0KBZ0drdg2aB8rj7KLzhOWXY0h34Kn3gVEtP69Aj5W/Ao8h0O\npT42OsqGFZNhJoPuwHRj9X7ePjR29yYIlt3/eOi8AKk745ytnWAi41MLpLWr\n9kSaQfUMTzMbL+oAOL30TxKHyIy0VZny/MDSFttRlBmS6mZRxC6EjeXGX2gi\nCzyHY2XPFvwJLbFNZW3tL5BqHJTPO6bvpIJX2HYVCrMhFDoew7s3DOxwN0MK\nKagtII9EFLHuC8C9JX8QqB87unI2bWr1Zmyr/LA5XVbMOMw8Mx6Z4OoqnNcA\n0QCHz2KNUmQIOGjVD6tgkbc91/IYGaqohPefB2QJD8/nyHq5Hk1RHFJ3KF6d\nfAoLeT3k5AXGIHXBHaF8nPhayfv8NB67G0682R9TQqiaEnLhRbcRV+lFiyZe\njS/G/1SOhzo5WuPZmSmAsC3/PxWa1vunM69PhWGh0i4An7c+Nz0/1Zv2yOog\nJ2VY0HkrBvKyfoIB03bVYO7lKqa97lF8lCdILT6iNc9MRm81y2PLt6F1Tymt\n+mAxmOxMPTz3ToXZiuntM3A0pRm8qAbXDaBknNWEL6fE0msldZi5sz4xUXzm\nVOcb3DGhyjF+IDQSj7In7u05FjLuSsKBSg+zNWlNF2uG9f7Lfd00OwZPHU3K\nSLDN\r\n=EB3m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"77c142c18b7507ef5f6a795ee962fe7586caf2f5","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.2.1-77c142c_1637574792321_0.590351789398911","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.3.0-47bb29a":{"name":"@team-plain/react-chat-ui","version":"1.3.0-47bb29a","license":"MIT","_id":"@team-plain/react-chat-ui@1.3.0-47bb29a","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"edb34f2f7b5f8a57ea8e7a45ac0346c9b3bd05ce","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.3.0-47bb29a.tgz","fileCount":83,"integrity":"sha512-VgICn7C/I1dtaWuEp0/BWQev8tOilLb2oXaD0ZLxazBbxvYnFOF7AjQbHMO/4kZrm4BJr+krvGmI5L3jzecDSA==","signatures":[{"sig":"MEUCIE2uVwrDFXHaA2kNmqh0EeyhqYR4dzz/B5Nv7h8PAmdpAiEAo8d4SCEAWEn5sa/Er6bhg/s1aUzepnDz9V5TJcyXp5M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm2rKCRA9TVsSAnZWagAAcSkP/3tdP1fPHCKmFt3EPUNw\nj873QDu3I/G6UoNGGcG8xeNiZcc7TDmvzXg2p6tldhH+vTqNuo3D3ezbw7ZT\nLuGNuZyg53m5h+KaZ2OHhe3v/Xaxsgsh7925BkJZ6HTu0kh17P1KNs0v1ahu\n6E2Df/kzCy+TvS3DnWtf+XXk9SCAeJ2HM4uVy7AgeWGfHUzPwKmz2ohsasn+\nP74sesU8AkT59SGFHo1+7116QdDIHkEngXN/BMNP1aiRuHqiR3yHvdq3LBl7\neSVPBxDR79iD2Zx6ESQgmg18t1Tjxna/4BIAC4PzIISNpCgddC4xqJ+zNl0T\np6Oxj/n1Y2GScQmYxNtTNCiFRaJ+NpKLSkOQ2NUqjzAC7ob+qCzkCpBc9RuA\nCINZNmp+nK85gp/MESIdW47ubMhdnlVpqpxvMJIS843FS2Pv+vndvpN6Rv9M\nVuz+MBnen5f1/voGWxSrm/HjJSBpgMx0rPEODKrtdt42fNMc9V+eOhzRtzj3\nvXUQsWZJ2QOHX9Mr2p/tgeI4MaNPfW2Hg0nCGsqAkPnOi6xkvUZhYVXiG/WF\nycx1R7w9GGYf03RtXfMne76JPw9H6Kg+Wz5fkLZmJ2J+fDfX+fp4AAnpBb8Y\nFwFzc3jnKcQ8VjRJfIgjv4U81NbcA4+rdJgmnN635e/A4orNhxtt/GgNNEKc\ngGgQ\r\n=4FDJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"47bb29a8422eb1f0e5fd2f2440ec9a62900812e5","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.3.0-47bb29a_1637575370216_0.8812437701541287","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.3.0":{"name":"@team-plain/react-chat-ui","version":"1.3.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.3.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"43869f7c410b79ef5c02979a80cbf0b69b233ee1","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.3.0.tgz","fileCount":83,"integrity":"sha512-dRhhU7wJZ/UfTtrUI95TQ6J8k6JE7ioP5+xeRtN2t73mHvFK7R0JcXJlLGy9r16AqNDR4e+ZwmZCYLSflRMPow==","signatures":[{"sig":"MEQCIFh7blQIq6+I0Qgn4hfGaj6UKYqzDEiTOjlWajqZUs5dAiAg/JnpE8+IrBSjBv2z5zWG5QYqN6Q4T0r18xTxBYWtbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm2rPCRA9TVsSAnZWagAAhk4P/jrFUXcKYIwSy1mGsSy0\ncDRsf1MOKB7KTR7ZGbcGgH1rst03hmL3P9gXHboj+cBsS79oHteNyPD74Al2\nZQMkT3fHFty/2isCuhOsmuij5xg7u1yESOvwPjAc3cmxAuSUhW9c19+1yfbS\nJ4G8EASFMgSbUuDV4d0o0VuIBX4ZZUx011iMUhO5MDmCXsr3gkP7S9tZYDGl\nYzxV1mOYswh8fwUuGtsKyi13fcRx3ADGKYM6i51XG0MmN7k8e94UB0aVyh55\ny5G01QeW9RAyI+01fIth0P7DWlWH9gOvCpn6wyzrZaD/r39mEHWSPZSadLaJ\n/JhTINt0qHxdY3fStEaW7HhP/nWIjGfqWdHzYfZ4M+7BmMiwsQOZ8do2YbP1\nSA1HqHvw9h9cJ8syA3u+u+zwI4zTVnxdckQ+/UVdhBvWMUM6fEzs9plyTmX/\njobbx4cBTKjBF0ZFCKujhpl4pykGup9eoi48mvlcpbbsvRYJQbXd8YOOZi23\nTfeRT9tsRUnbbm52jeZ0XEO85L95rAqKiEgwVIJkKr2sXVWaob4FGOba3zCl\n6a5CDQmcXXTgzvQbPuOQEm0xqkog3Pzovkp5jYgrb5LbNkg/BVyPf1PiT1eZ\npiMZ0AIv87NcsknPkretl7+e0giDnNnq2cOENUQMymYhwn75kpSsfJQ97Rlu\niFUg\r\n=fiOR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"47bb29a8422eb1f0e5fd2f2440ec9a62900812e5","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.3.0_1637575375714_0.9220443839306751","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.3.0-eb42581":{"name":"@team-plain/react-chat-ui","version":"1.3.0-eb42581","license":"MIT","_id":"@team-plain/react-chat-ui@1.3.0-eb42581","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f8dac55e52c16ce90cdf8a723156a58dd6f1c52f","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.3.0-eb42581.tgz","fileCount":85,"integrity":"sha512-jFDx9XQy1BTkX7UL8h2lcf1q0vOXR2SywWk3edp6DSrs+kRWw40J31g5XVbMgDaQ/0taBrixBQ5tyH2GonPCFg==","signatures":[{"sig":"MEQCIE0uvWTHC6A8STGv2FyOONHidwgQz0i5VGe1cYE6tq6zAiBbFQzUpJWAZuOEYQEaUWJBTlRUyhcMZo2Dj13wfWkW6A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm7mdCRA9TVsSAnZWagAAuj0P/jjlQ00fy9B21Ebwp9w3\nw134EdhBtuK4LHUGggVGrDnPiXhXdWEWPKmdIzmZjqLM37SV9vfL4s1xMaHP\nOsSVlK4Pv8bf0fRfI0Ix0igVM4SnD/Yvz3YcLyOr8YMw/ee+imElPI5rVtGq\nqBYAnbtEkBL8OXTOfkLfy7BeT64pHR+XdPEOimdRLd6G8SFQhRFcDiLjsNXp\n9WGeBzYjRPo2PqwOYtIz7caja4FYC7hBLNwe5eO1ZkVBhde3mW/YPyimaHFP\nVTe/3iqCz5OrfJ6SwdJv4qSiWpKAsr3sme0Fkb4zHr5YWAyuRZuM48P45WML\nCqcbDy/akMgfjuSUC2bRtVVYZTiPvs6Epm+/z2R6kAnyJf578euGnZHg5two\nLoxNbz6yTUa2BfJfmpgSQOBOtyWHeAMYq1RVgVROhifs0lhRT5ynTPhwTiys\nqhRl4ISoTd4POXcPiXGvoO4i8PBz6T1a+fg4b6l4Ums7ypQwN+u4AheYvwP3\nn1ZU0x7QThf6VrDFC3YeVvyjVVFL9gxDr0DmH/HTERQGipqAoFT5nCWkDHe0\nxoAhZ52xlw9yHN98cyWk8v2LFS5vbPx40heJVr5H5NNfm9qJyO418vCIGUyz\nsFyCbW4VDuXBibi9m2mgcfmxtQGPoo28GK/uC1Y1gHQtz4/jKyQBHjxueKVr\nLnz/\r\n=NFpz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"eb42581c1e23a77a3764a6780ea36c916c7724ac","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.3.0-eb42581_1637595549518_0.46574068439727645","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.3.0-2eebeb4":{"name":"@team-plain/react-chat-ui","version":"1.3.0-2eebeb4","license":"MIT","_id":"@team-plain/react-chat-ui@1.3.0-2eebeb4","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"597e9d2bd0a5b127fe653fb6282822402f82ecaf","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.3.0-2eebeb4.tgz","fileCount":85,"integrity":"sha512-KLEw+nT+DzLeZqtdW0J5bU4sJ+2d/gHDrG1ieB57ZuHYFo6Nh+cMk8rb2P4OgSOriGwUiHeshiVApC59GItcgg==","signatures":[{"sig":"MEYCIQCTQa2N+90ElYEhiwsGHfNTLtSpXsVs9pTSCueWStrhBwIhAPuQwAUC7G85JqsA6ggEZ9hBGcr13/G0j7IWLMSKx28k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm8AxCRA9TVsSAnZWagAAi3cP/jFiyf5b/SKUW0p8rL6M\nNinC1HCtp3jOyEodpeAVW/dt06SjMR34MXsocZKlzDKJRqNpODH4LQDHsh0d\nSUGF/GNgKFx9VQsX+GhcnddN4iWH8I9VBW6wmrPgBkOCDrmxS6ahFHXmhvHH\njhYOluUxGPuMBc4Ua/iUHZRpi1mArl/RvaTmzqRyZPsZ+OPWPOS4jJD5/XgA\nDStGHv0cEnyM/gi1JvqwMZYYT2fusRv+0LlC69t/3qsJo45X98RsB7HGISL9\nYiCW3BJSv44X3O+Tyrn2hOyaMFkaj8rcyIqA+YwaWyoAyZVMdbJPHqMaSFHO\n6WZjxCxmSDwwJmR4aF0zWy0QqBHnsZG3H874JBmJarHXW318bbXn87RvdtTf\nvspJ5mjtjwfqZXY7I1J5sWCPTZhGqjZrlW+nkUOkMBlCU3UwYg/aBRZA/GaG\nXr9r564IwBohfSQC5TW2Gq8Vi4wSwvz4oAgjFQK/+n/ABEmn75Pq+7qVBwjm\nQIc+G3g5pNvfdAImjboBDGYltxeW4OIUoERRCKpEqa/0+bXFAYiCPYspwBp1\nvzGRIgsOcBZsanayDl2z5GaKtHFaN2nfgX8Mhs+rhaEY/RiQIPpKhe/B/y06\nF0wWKa/lqInToSy04ljJfJm0RU2K6BygGcx4RgTUsRYUIG8RKT3NnpM4kH6s\nqIHQ\r\n=xNQO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"2eebeb4ea7b5bffccc7f169be4302fa6211841b0","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.3.0-2eebeb4_1637597233809_0.6071231670255208","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.4.0-b23e14b":{"name":"@team-plain/react-chat-ui","version":"1.4.0-b23e14b","license":"MIT","_id":"@team-plain/react-chat-ui@1.4.0-b23e14b","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"bbfef96f7bb6693aa8a481d8a390ef80f5e83f53","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.4.0-b23e14b.tgz","fileCount":85,"integrity":"sha512-v/FOKUChc11POG/iGdz9bU31VNBWW5pINR5mg1YhD0Sicj60nk33EiKmFpnXlKOIBDt+1O18sHRJ4dljUrAW+g==","signatures":[{"sig":"MEUCIQCTfPYO0Xz7lQlnS8hoeUUe86xfsLNNNktedpfYo4H7SwIgcKrKMSVkVdhRpaaOzrvKjFprfPoF11Hubptke07zJF4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnAtBCRA9TVsSAnZWagAAbukQAJQDKHBeUvDF2LaoOEoY\nr1vgjagd0txL9CO7f35E1rDa66byd6ARyfRRGgOT8PTi3qaPVtPxu+8jn+ut\nGZ6RJNTLIy6mpmm9qYQEHtCdx6CgisqxvgxL9FHiXJGu17xrScJiFPsQfs62\n5UcUKIgHi0WIu/1po1ysiGohGTZyP5s3ZURSri/aWcnfGf5gTwGbOAaH+Yea\nzFitWYolx+SQpTLHF0jv1yS2rwXc3RWY/niVqpC5HcVqCufqQJ5lxqvolrJT\n+S0YMjtKwahmTbnfLV6UymGacQ74FgnvhWZPWkbt+9wJKUZ15Q5mINCnaKco\nzG/1HBlTJ4yncrT7o3ut3HljYnLe35XagSXXwMN/0x1E4663he/X1XoqylAp\nnV6RxGzRKgxXdy9mAdJnZOHWtbdcRhCHEBlkSBdGv/E70m0Kvzgeyi9ueHPH\nFIYMHkE5hLwRyCOZKqwF0nHLagz23mArjt+zNYw9XQb5O2nY6CPRqI6SiZ9i\nJ5SLwqVh0M6nCadbNniUmt2oJfOe4R1giMZtwUP4AOKIPtqtidUDbNydYmmc\nkN0Xg9lxhiBp6n38J97y9Sd/VsmbasR96gdb4aR7ohmtF9mnVdOcdOM+mN9a\nV5W2TqOw7Yh2YqhtPg56gjN+EjgTpVAv+uAv0ci34LRU4bXka5igevGFeCUN\nWGZM\r\n=k+pO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"b23e14b1a552a20215009be1a796149262890b5e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.4.0-b23e14b_1637616449847_0.7664861352499892","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.4.0":{"name":"@team-plain/react-chat-ui","version":"1.4.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.4.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"7e6d57bad7331892a3825847e78102a844234693","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.4.0.tgz","fileCount":85,"integrity":"sha512-e4JGKllh6b933fBwwAfB241jM8CIHpCkgNXQHORg4+tIpKljpeFfLGIcmonZMGapCiY5pSQqlEtYZ3BO/87MFg==","signatures":[{"sig":"MEUCIBT9HwIIVMSEuj3afkI83HYMwsA+G/EBTAGaTQzTvFIYAiEAtRPdCdIVJJEvwPhU/faOY3/wiQwc/K3pEks9OaA4Zh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnAtHCRA9TVsSAnZWagAAPocP/2b33nmsWgGcCzXgKObS\n6cSl6OLhnC3aFBbMm2FkXgUL+Y3t20jo7Mi9LZxN5B8CYeNm/avzs6BDEBYV\n2fDiR3eFecNMw8hUlqOgiC5Sghwhq41f2Ld93n5YePIrkjd95Ar/gyx+8d0+\nABVSNQT1c3H/pvq9eCJyarbUDG7jm95a+7B9yCKCw0RU2dnoVwSeLg72Bs7e\nXSiY/G+8NTcosDLp6RLE4Hjp4zA3aUSfnQkMOyZnJxHKf0/coUTln+qM/+5k\nmfWdetablKg/t0m97CniI11gz9MdH2cSOUUUMzmk9oFJiFySxcJmdbvknjSc\nuv642BlHM/EbuiKUWndj5jN9VlvPJyWPfAjBDnkZQE+O1k+ewHwLvPH4j7ZA\n83h3bsUa9OjuPn5L1Uedp9sfOZeKFiNCVFv8tUQtzOL3rCOAMA1qhf1P3p2z\nctCaw2WOig5UV9J9J5Hh09ma7DPBE758CMcu3EFuCDc2K9TAXJ5bEKFnUNJQ\nCww9FeL7JgmAVjEWfX8a7l07UIJqJN8fMDrr160nfzUY10tltnA7A2EON+5P\nF7zDfijspjJ9bwhRzT4KkW4dIGrOUJyz9kFg3CFMQ8VmX7/suCs0R1AvM23t\nC5d8QdPRugUXhYqKKhY2/fqwYWBTRIpLCE+oNZXjgZ2lk6fKFTp3H21E+Lb/\nan9a\r\n=MWye\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"b23e14b1a552a20215009be1a796149262890b5e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.6","luxon":"^2.1.1","goober":"2.0.43","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.4.1","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.36","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.4.0_1637616455222_0.3212044528283","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.4.0-d044cc3":{"name":"@team-plain/react-chat-ui","version":"1.4.0-d044cc3","license":"MIT","_id":"@team-plain/react-chat-ui@1.4.0-d044cc3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0927f39a57a0e22b06f05b3e2529a309e490cafd","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.4.0-d044cc3.tgz","fileCount":85,"integrity":"sha512-lbHgxZuMRhRnZbipiwWOg1CBOxuBzFVtjb4++//Jh9QTydolP0qqMVFmlVmJ5vMod+zNpXdMzSsWn3EB6asaMA==","signatures":[{"sig":"MEUCIQC2UmQiTevu9wg419jJivHsNmCU+gDo+N3DuGBwkOou0gIgX3p3BSQ0utBcgu+bdiHqx5K4AXQ8xQ9DwujNpsXwaf0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpO/LCRA9TVsSAnZWagAAdy8P/iPiky7Qp5MUwsbCDUta\nDTeklMA6rlxlxrwk0gtbt0QE/HFEBpgifLU1oW5y0qKYHrIRDXyYlbCp7QQJ\nYvsARDYE/+0+mszdVhPp1UNL/A1aoVdEe0Y6Lb0CjGJQiifHEuQ9tfU475Bg\ncREod/oJOYV6j4XTTuW5hnnV/+VpM+xAXDXl51lQ6K4eTh3hdsYhE//Ap3X3\nepM7ct6hTq5FMgBjKAOJM4Uftt+unSyoaMPGSMANLzuYA8jfDtLotYzT3Fr3\nXPD2zFKIjYknQm1uUiJ8DON87vkE4rsXNoAJxIGSSCoeFrVkZJ0s/eGvQILg\n7NpA1cMN+iMQpr7iUUs9MVNn5D9eakW1mFkO7Qw7N06SQOp8eqYnyatxYZzM\nEYvNnDCBE4D2Ja3qB7jvEyrUEV4GLKsl5dMzZgF37AH0FhNUuElQWVqrT9dw\niUhnq+pplYgFymcwESinFRszMCF3E030VFn4WXHNrL/NhqOrEEK/bb1b7JqV\nMh3ofqRVbASKGRVXR6KJlx4Jw1WBPR9M1LWjilvPCLvCbzFIL0VpOwKcs8U4\n4vDsRgpAy+gl1Yje2I8C4wC6KKwOVL3rhSbAowj7yuZWgBFSo9nDZFCA+hc5\nrtJprtHwnD9PSfqytgcI5EqAVDJy8Ih9GclcSJIVTJ+JQwTja6wNCE7xczCN\nt3i+\r\n=25Qk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"d044cc32b32e35e96d2fb9fb07b2b842b1905ba9","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.1.1","goober":"2.1.0","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.5.0","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.4.0-d044cc3_1638199243399_0.0666777804850629","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.4.0-2fc2ffa":{"name":"@team-plain/react-chat-ui","version":"1.4.0-2fc2ffa","license":"MIT","_id":"@team-plain/react-chat-ui@1.4.0-2fc2ffa","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"bc9113c30f28d37073be2500f35ea4a564193e0d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.4.0-2fc2ffa.tgz","fileCount":85,"integrity":"sha512-Hi4CZVB7hJ0qTDLSQ/SuUFF0Hy5vjU5rpmN8ysO/tFBo1ShU6tjHw1p0pwX49mthnyhOoduzYtPcpxU/jlzd8A==","signatures":[{"sig":"MEUCIQDcTjOhtqvR2r7K0RqK+avruEB2QwgyEdwl0y7OUjLx9QIgZ0jXCHTfHlQ3fuLIYeS4LGp3iUy49sjC05HxucqnJrs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpzTnCRA9TVsSAnZWagAAcuMP/iV4ZRqnRfb23VFMnZaw\nZGZwP8uZ8t2k8F861J1JI+9gaP+QHsACDIQiotYD9GUcrJSgkusJf5e95q7+\nUxjFNUhoKN3xwBjZ1xCAM5kYVEFZco8/stbxTARtvdws8NcIilgQsMy1HsaQ\nqMxrZiDSd5G3zI6N8bC3u5A69BC2gsf5cHk1iXEznPLR+6HRkarBQMCYmw1j\nFSwRUIDkJUjeu/t6eFnx77wAFRsasJtnPHg7Z0fnnhqCTFifIqy23SALN8FV\nVPTKg6UnbeQCWZ1X4qzIxuSiW89LIo3UnMrsxQP7uAChpm8FlrdgY2Ok24Fi\nqPVY1mp4zQEUEXZwBBhDEcW/GT4okcEPAdoR86PeOr5ouuEzjOH5z7+t14K3\nvBOnd4X8c9/JisnNqJnfKxK3pFz6C2O9q8cG2fBZgXNiyiqW2XhR2OqRNVaE\nSUspKa/GGHJ1uYKDT9CtANCqCnmIebcQRToceHCrUPOm/uZpkwgwUihsoHk5\nOb++XrtFTPfN/35O6fD55QH8BdCtlONmw1kO33SypmhDzzMcRA5s6LdTd1+h\n2zzjDnNKtiLiTYDUJAZHyaNneUVjSJxxfXbi7MXn6CuhiknSBnhMA3/aE/4C\nVFIvTmb1Ty0sII9F8tfFJAJcL+H/UiMzkjtJPX6KDXaCiXkODGQaPqkjOxVG\nW4xM\r\n=PPW7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"2fc2ffabf49c1016ff9130b5621196e1f4eb0c18","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.1.1","goober":"2.1.0","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.5.0","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.4.0-2fc2ffa_1638348007538_0.5093777295543416","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0-6690563":{"name":"@team-plain/react-chat-ui","version":"1.5.0-6690563","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0-6690563","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"526801d3f050c6c630a9a804bb2341231d261554","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0-6690563.tgz","fileCount":85,"integrity":"sha512-Fem2MrBe0lZb/aaADl3ZgtTEpjhhIf7Z/yvN8epBBN7RFgyXWSVqANJyWK66fC32ADarsZ9tjT7kT2TDtW1JIw==","signatures":[{"sig":"MEQCICY1k8mrI5JIFZf4EEJF36s7ZWhhbCyKcIH0CYEDozelAiAsm73aP/QcjoyRLe9niG8Vz4TWnGgIjxeU9wadISMWSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpzaECRA9TVsSAnZWagAAllgP/iuoqzVFUOs2vwpaxqih\n8Xku+Rd4GrR4/licvzspzledxRwW5ohxck+UayY+JkFaIp/yVMPfxRIk7XXc\n/suajPuQGDM0xnL6mht+acHBOF3pzI9k+O0u9ulrFBynt7LBm3sL+ZsZJPRH\nzU7DTP0BukcTsARH9MZNmx1oQJyNJt7f0P5blkstCx0K9kir0tJLKe7NEobt\njhcQKcRxM/JHy6Cq5dHCGpA/jLghAc1avRXTes6+uQ7DEJ8lQjmaZKZgvcaQ\nYj8fY0YG3ab93jLBnjVPeFFGK/LhNBWMyNHGlgoRf+v5frJnSyq6jsn24nxQ\nTuXWuIevc96ShhAgyC2ofG9oQGTMNCD2fXoUPx3wCuFAIiPb8OdDMa2ACb3A\nKVojgR5wnE1+Nkupm5BZTM7+5unwO/mTFQuOilX5Fk9L89kJOQi7BaAVc2D+\nS2Juvux8SsrJXP4oSaY6M2Z5ZEXFvHnY/GwG/t5D+btgcqUy0jG16Xcs01bm\nKvHOSkJmBIHcvvY8RzyWbP5s1nsgtX51+2zC4yldrfWtGs2afNShNmNfywH6\nVcXzIt5efECYu64/eW2aeAWtt8wbmO6OergbU43ggRBhcPueLl40cc70bleS\nXoZ2ernoQr+gzHmlF0R1U17E0TurJ/KI9wC3Aqn17M+B6d3W2BvAHKsaez79\nuDyR\r\n=T4Fs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"6690563151d1c42d612342095966cdc43da8c9be","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.1.1","goober":"2.1.0","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.5.0","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0-6690563_1638348420264_0.8535648993376934","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0":{"name":"@team-plain/react-chat-ui","version":"1.5.0","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b31d6f193e198a26083cda90bc90413a82c10de2","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0.tgz","fileCount":85,"integrity":"sha512-87ymSI6B0UnJGM2qjnKsIelXatdockPb/NLLymutK+z9oclGK/CeAZD6vujJEMIhA+jDl/OA1Yj1dOf/rGllKw==","signatures":[{"sig":"MEYCIQCGXqm2L3ndYzd/2dOhp1WjxbWjWx1asEmRBqjOtTFB7wIhAOVfXvMgB5sumqiw6zE2C6dWlub1KwuXXDB1ZTMqaY3T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpzaMCRA9TVsSAnZWagAA0tgP/izw4qevXd4TJh7crBwY\ngzA4RzQL4GqaepDELAWVxjfHxtyoWMXzhdsdsg87u+lra5tmCnxJakNa3NAu\nI07kAfQGpXw+ZFmw7+ZxRAvMDklkfNXqPvNHXDvAQwDyznmglEIUFIA/q/GF\n7XxJSrj2jx6ZDvuT+P5wtNOloLTOrQEOAVxOWQr0e1/7pEkbJml+Cxz2nvWw\nNfZW6FaSXAchqOoUR0ERvC2T3kIMCcw1e6TACB6Np26k4EGYD9bIiYO07gju\nvDA1KfbEk52fG6io8RZzErSp0SuLUr7d+hIKOvw7jeKm3LCA2ySBNzWA50Y/\ni1t6TQxyUT7Uf7vv44dfYxbPVHLrWFeBjtjBrSVF6SzAEM5elHG6MmqI6zFW\nIlXW/A+ilUhfVKoSiUWz9qRIzQiSezojRW73QNkNnerg5SZYUah2mXIj5q+R\neS2sG8w4yp7s8I9BBMR6CsN08P5+ginXXIDwR2X2W+LBcvwXztHtd7cxqb4y\nbuc5+83WE5YXk2cViQniEllzNY2WJBvvDqBNxw0Slh53cQzvas9gOR+vySUX\nzfek1LwUjen7diugpdUmzMM7LZGuzk5OkU4+W34lNarALowP/iWvzrFojCvc\nN1XHlRqoxJVJR4uX/Bi88B083AN3rnr461R+moX9Y2BvWfOnU8bEYJ2teCLO\nzLQZ\r\n=6KJf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"6690563151d1c42d612342095966cdc43da8c9be","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.1.1","goober":"2.1.0","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.3.1","eslint":"8.3.0","ts-jest":"27.0.7","prettier":"2.5.0","jest-diff":"27.3.1","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.3.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.4.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.1"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0_1638348428294_0.5125201289236405","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0-1e7a934":{"name":"@team-plain/react-chat-ui","version":"1.5.0-1e7a934","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0-1e7a934","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6a82373fb3da0a5bb7b0516cc44127b0eeef8df1","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0-1e7a934.tgz","fileCount":85,"integrity":"sha512-q5fIaJgOEsGR/J6zpgYhtoMAn5lgCwUM1wuc9BScT69lZn1aXVrcgWgG78SyTQVldqFG97Edbe2VDeoqloYE/w==","signatures":[{"sig":"MEQCIDl9AjQgmB2zyHz6xiRIp9WPM0vxgQH0nwA+1lBnokbGAiBocPmbNjyn8o0foXWDkWgIad5BlyrV5d2Kx7U7a6zwqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrezACRA9TVsSAnZWagAAN2YP+gNXTDtvKI8zLrBi3Rsb\na+NZ8oB2IfiEkmHvOxewxkXr1W1ZkJjd/qK1M9p1SgGZMYy3qiIne0r0S4NX\nJ9QDs47XD6RwJCjTEoXEnyAmCVSulezvSMjKCyu2+v5sNwKgCOgV/r92CTZg\n/Xd84fyrWiAidN2EJshSNUwPe7HcW5Z79XolXq1JGlyi1kM/hV8Ypq/37Ytn\n/5KvE9wrtv64Aux32WU/4idsXcu3Um+IEP9yLZuyHCP+biL4n8HToUZGIdlg\ntObZvv8wQm/q03y+Jd/72/gZJKTUXoP3x5H2tEAeF02qD6tbpjux7xDo6HK/\nK5KRdcf7KJ2Hova7e1LE4YBLV7RJ+Pk1GfSEvoTPJ0i91tMpASeHkN0johEg\nASDMUtHYQJ9nAnU2Gzy+NjcqZVr2iaWZSUfSilBbfhsHJuVWU+jOlCnyxxtt\nRK0GSM7Qkbx16SGRGVBAyG+z5E7C95lcvC2H8Dr1HgCCjEc2TPprSE2Jv7y/\nrJLFbiljgyUgIBDFzk9qrSws/dcKtJSriRuRM3RwZRJoEPsAfFpLFc3RjNDX\nZz8mk07NFtj7Q5TyKH+kUgHHQs9HWOVOuegyQjHvO8k9Ex7BjTlDtYJLI50B\nIyvxCsjiwBcAIbL5MAeJ5FL7I3zI6kYvvb4qPtFXe/2c4JMt8M6YjNE3S2sh\nTCgH\r\n=50gc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"1e7a934ef243a4dd9df9d7eb3f99c1dac67dc0d9","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.1.1","goober":"2.1.0","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.0.1","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.3","eslint":"8.4.0","ts-jest":"27.1.0","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.2","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.177","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.5.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.5.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0-1e7a934_1638788288568_0.016235133137944446","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0-dcb5b00":{"name":"@team-plain/react-chat-ui","version":"1.5.0-dcb5b00","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0-dcb5b00","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ecc326e937bbbde1e1e1c67af995f727ff25acd2","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0-dcb5b00.tgz","fileCount":85,"integrity":"sha512-9Cryw0EaOrq1iHAa6RpDnqC0IbfG+IUl5tkpx3rW7Smn08GCLt4aYzFp/wz4+wdJb/d2mS1IhLNWZi8YNv1p6Q==","signatures":[{"sig":"MEYCIQDCS3Oc6fRpbfO9EfSisBfi7hpxAsyzSiZJEqxuIU0G9gIhANjkxCMHIgRGZQme7KHDYq/4mJB1rOGvySPyZFdCbN3q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvFyeCRA9TVsSAnZWagAAId4QAIOf+vte27EyuUK1X6iZ\ny8RQiuFH0ZQRSDP7pyHyuVpesvD3yOt7xKNsSrZeKwI5UO3zcfzn/hCAuJLX\nyOdEEFsyZlMenYjkJxBr5OM6b14uATcLgzLH7rwgXJFniZZhEPPmNGFratk6\nKEmmj347uxWTQXxlvZrCru2RbaRg0ZizG+Vb5DHSVhbXdGPEESBg14MZAU30\nB1Lh+7UdGEVNSSczUz1OS1ToFM9N/hHWVun6MgAQGNWOVKeyZcTuf6fYpqUS\nTGdCGAV6JhSnO7tQgwYtdhXeCno4n6SgXhx8am3Z/AacMJpCF1hF6HYLRoHw\njxRYsAJoDiAdnoaIAIJSoojTCDUIvj6cRKPbSrujK7eP7hPvKLMql8I8IGfs\ng1tRDSKaKC0l0iJEssD2KTf7qBWEYqD2dIcj8mdoaF0zIAAXsgxmVT7SucUs\nEzPhAQgYNscZBWWwNHrBV4YTtp4+ZNVi/LTcgOWXzwx8Z3qJrZIH1ZiDE9e3\npR0wI/w7r2m1xIw5sBPfj0OxIckwk7Buj/VoVJyJ7mTWx4uPlXwjCUIZyskO\n3E4qWSckJ4Ajvizbhqiy5WghmKjeeU3J2TXop/CxBFySlNQGCgOVrIhgZkk2\naSW89mpGNST2/gucbq1Hmgq6Z+i2gq8MCLQIocUu1ebPl+K+EHcmzM+38MCv\nG8lU\r\n=OTi7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"dcb5b00aed434922a14cccdca451d73ac18bd3bc","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.2.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.1.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.4","eslint":"8.4.1","ts-jest":"27.1.1","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.3","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.7","@types/react":"^17.0.37","@babel/parser":"7.16.4","@types/lodash":"4.14.178","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.6.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.6.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0-dcb5b00_1639734430364_0.8609334499896628","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0-b509df3":{"name":"@team-plain/react-chat-ui","version":"1.5.0-b509df3","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0-b509df3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e05644ffd78f3e26c75055c1a6574d6d3ca0a352","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0-b509df3.tgz","fileCount":85,"integrity":"sha512-5TBNMDYKJ/req+sVwhBX1R35stBBu4/32Tgy+e+xgRbvpvHHdcnx6dIV434eJHogtNNfJtpFp/f8FXV3zNE+mw==","signatures":[{"sig":"MEQCIHHVjb9dL2gnSTgCU/v6glVrTrKi9SZGsmXRng5H43FBAiA9oZYzCRWuZQfD0nvDPdOljQHY4rXkH9SmdHyqfiuCjQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwFH/CRA9TVsSAnZWagAAdQ0QAIlPTz/FFyFgeis35Z69\nvq+s9FCWkuTcQEQ3nXgpUT1K6l4dB4Ib6akBaOiC88EWPfAYBTCiJi2NFSlH\naTkhG2HgbkcBYSS2r0gRUMM2YMbWCs7g173q1R2srtDjGL4vxMuKBXWSiPf0\nks9lp0zEq00POo8Hs204z51iDB9qAXs6DZKGvUyQilV29N7VCY4Jt7M75P0b\nuy3ZqmvAfg3JzQ6snOuXuSbT263kxQA915yTDDoNFbbMAlzI0a2BT+Aq6bRo\nom7/tqJGIHj7/RlNxEmQM9pwjp8mZIk2RuzeUAzQqq0HTuMN8nc1RgdqsC/o\nww6yEJQBcOJvihlR0S/hC6wqmG05KYme9kyrBz19pR4oW2Q7qqt+4/EO/k4p\nqlrRaB6weofyqZZQFHNQ17ps8Q0mwXfCxj7LEiuDO2QCKQI0V9uLKakyWeKU\nQBThxasFeeXA2BBfcJC8Idb9RMDrPwLuskNb7uqrl9X+/KA1vD38KgwRsgkf\nt+lgzSHvtHI4ocY6Zflc96lCjY11gEyv2fkdPCE15A9vdLZvLk9YyCUoj2O5\n+sTJ+BzmoL/mQ4jZ6vY8S5tTQVGZZ8BY5HFfMRPDGhgiyZWVvyOFX/4NqFxi\nn1n+PBQKnn1huZNZPA1vEdSKkOwAFlCNCWgpzZVuLOJPjbzF9jnMIns98b1f\n8ey7\r\n=Q691\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"b509df3ae3f9845cf7391ec61728903a88b9f679","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.2.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.5","eslint":"8.5.0","ts-jest":"27.1.2","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.5.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.0.3","@types/node":"16.10.3","@types/luxon":"2.0.8","@types/react":"^17.0.37","@babel/parser":"7.16.6","@types/lodash":"4.14.178","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.27.1","@graphql-codegen/add":"3.1.0","@graphql-codegen/cli":"2.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.7.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.7.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.1","@graphql-codegen/typescript-graphql-request":"4.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0-b509df3_1639993855215_0.38006092783722223","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.0-5d4bcda":{"name":"@team-plain/react-chat-ui","version":"1.5.0-5d4bcda","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.0-5d4bcda","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6c1b071bf552450e3878710d662f7951e603022e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.0-5d4bcda.tgz","fileCount":85,"integrity":"sha512-0Gp9CY1JzsPmDd9Dn4Tgxox8lOGF6U8Ehe++kiMcQMaMdBW/iE7m+MOnXyI9u1gcXuuAcuePWnKmUyeXiAf3Sg==","signatures":[{"sig":"MEYCIQDQVMl7ukJLMzMio5lYQ6nsktY3gXzpZz4/2LiEDnDHPQIhAMk0B2TpF+Hd6iMQuAEFJDpHC91cg1d2bIcMwfX/Ufpt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1A2rCRA9TVsSAnZWagAAl1sP/0HgRDrr1nDvZuVzB4RJ\nSbWuKvB/u2qCxa3zZkrV7Lk+eEGXsxe7BEtrZfjEc5fpt4wdORyW1PUlY42D\nlWYRz7LKhbwSZjFA8pulj5pmevFUv/Kfo72xOpLVcTu1HtN6PgE5tAbhzzNS\nwNTRb5MfZ0xkJ850YpeT/vlS0ns81donrnTdRnaZNCANPIpr2DJIgzNk83b2\nBUiG7HLp0NeHAsHwzvXwrIwzX3YVofld+cxJiPz4BpO9phhbZ4QA0yBUTToo\npoeBTodYDb71qqkHUsiza6oR61zTUFjmWBJmqeiH+VbSo34cSo84NVlCdI/1\nBm2e13E3hbxX7oDBSqz6IZIuTk1/wQ8olBnmUaAc0o6rgWy6nPN85JV4pAlH\nFZF+FHUoE+lYJDOjdGV/EzRlG5GzsBstVR/F6JuU0MYSFfeqn/hF8ixf7bGP\ntUedxK7Faz03W3YG5aP3PRiigJ3hszRP0d/r19VHWp7/QrWUtjKiAOxPxJhA\n+WCJBmOBlFaCRE+ksRz5mNJzkC26jlv+UKRd+m0n6eGR/OyQz9c6kc2w4Qub\nknApuWZpEp2izYf9PhJHHWsGmHynztuWioTB4NxpH84f3ZZZOTy41uMyJxNH\nubCLazNNBcwt8Gs8+agsmNYNliMi/WFKXjkcLDJ32JQuRcIXafzBHImKD0Jd\nDB+A\r\n=y2KJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"5d4bcda7f1b84604349ca1bf6f1c9f8c37550faa","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.3.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.5","eslint":"8.6.0","ts-jest":"27.1.2","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.8","@types/react":"^17.0.38","@babel/parser":"7.16.7","@types/lodash":"4.14.178","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.8.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.0-5d4bcda_1641287083673_0.2860093237775774","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.1":{"name":"@team-plain/react-chat-ui","version":"1.5.1","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f29f3bdfc39d3fa47dc4124c54ae086ec68a8e62","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.1.tgz","fileCount":85,"integrity":"sha512-ZHm3CKY3aVtTbNdKxj6it4R3e+f8EBstN+oS1ceukUjKy0DHYaPDgw83q9hwRwbf2c5fmdss6HteWQa5rHb8Ig==","signatures":[{"sig":"MEUCIQDe053yD5cvGBI9b31N4jMtdlYU6P4gP3zY1pckHzXmpQIgISwPOCpj8ku8Y5WGjs0egDCyYzNlcoGlTEquSb0AfpU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1BBFCRA9TVsSAnZWagAA0PQP/Rhq7hGxAlDSQUfYFB2Z\nZ5gPo1QFi4uVYCXRashxrVvINUGs/8zYUmVrG3v+PVi6gqHWrSvTEEWrfU68\ny9av+nu9aHsquITKBVD946OSQwQl55bTzcAjQufFmNG2/+LCd6G41gLiE615\nK2XzI6Gq2UJC9OQVH9+rtygegQNBvJ+j32liz00Mn1Rcw8/V+qYvpAzHcafo\n/njbryNB0FCtVA5i6jtSaC/7VrhkVAgHX2y7QZ6fj659aMjT3WZQq0uxZEa4\nIVxprx0FfBsjGakCqoMyRyYCjEcIDprOuPHm8oROfezzC2bXkHZA2DujO3ZY\nu2lF0G29E5JqND1Klhth5uZKFDxwe2AIc6WaKurlfCYh1zfYn0USMUSIz/Po\n5H+a0YqMR+N5GxRina4FM6Mcsm3HvbXyf9N6JfrKoahNnIrd/0qMFF1sVYWE\nRLKyAORY6Fhnb4qLaA5M3Hp2FfSud+O2TtA+pCe5QTf6oshCVYS1VFPW4Uz9\neud8Cj6z4jSMoGPecOTICPuRtVVnK5ChLTd2uFtQASyB//QHHGOnIV5M7Gzk\nmr+ek8bik7d9d5tcaxHFH7RdDHjbJqSQzrr8HMth9TopxzpUTqLRVYLHnFGi\n1LlX9OTqAKZYpojW/mx0K1NOsS7WRfWFA5yBjilbMQR7CNCMtGWlD6RxriZL\nILCx\r\n=mPf2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"dd630c93050c5ce39fff5133a494c1c01d13c60f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.3.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.4.5","eslint":"8.6.0","ts-jest":"27.1.2","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.8","@types/react":"^17.0.38","@babel/parser":"7.16.7","@types/lodash":"4.14.178","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.8.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.1_1641287749564_0.23565599535615545","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.1-dd630c9":{"name":"@team-plain/react-chat-ui","version":"1.5.1-dd630c9","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.1-dd630c9","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"35cb5742c8db2ddbe9b8873db32cd950653a1b88","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.1-dd630c9.tgz","fileCount":85,"integrity":"sha512-XRCV2Labyickkqus7qsFCQ2Lb3HUwHRmD1UEdSPYbQDtQ1zRKUzZDibcyjY/UeNDw80ZQHrKE9z5BSi9w8sbdw==","signatures":[{"sig":"MEUCIHfVZXSsSa5xklcwNBieeUTtas1JDZJ0Zp6SoN8EIUkcAiEA5UamAU+wi31kqM936BShk8Xx7nB7jpL6ICBXZ4rAcMA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1BBKCRA9TVsSAnZWagAADIUP/0lruNIvXpNpWTZEKS48\nJeTIILT+fIfyU4mdyyKBfIKbIgf0QKcTYvn/Z/0f6LXzdYNjs5vFiNtZWUR/\nCYO+TFeLTuiDoK8CJZZoGcm01h2Edhex+2LqMRiFAKl9mTVnfAYcBI3tL2Pl\nEjXJPaDOD0ematl07ttNexOFC2jfn1KsCBI55M/LFRLZ9aZ54is+yignVqBU\n/x+FvmU/3UpnDeUk1tX7foHZ9Vy0G0DzobYu3ZeY/L+Dt0rUj8CD1lEHlYWi\nzrrRZ7lQ0BD3dkpGsX5MZo++uv7kv6YDqmdeqiwZpySg1p+9/dw2R/bHf8jM\n7JxCYum6l3o9eaq6te+efXz1rkRsWX2X2mxMdO0OIWG5zTI+XaY8J2A0N/zJ\n9MR50Ygjexv0ovmCUuM0WVF6Ju38Nu5q5qWSl8371CeICl5t64Kolml10mp7\nqFEJ08ph5IMwa4pL67n+fujo9wO/A/7hYGiWyXmMpkVSbDJPriR6XWz8Qlmk\nxjQWAdK8hdqCh+08gvnxh2fBnkRFVOtqNxYWTmIC/+EoxcwMFYW3KSOPiC1y\neQU+tF7/Ob9qdq9LFVRTAphJgPlTZ6zEZ7C2mOepfsRc2Id3bU+9r3WP0AkY\nSMHUXOVOmyrT7JiVFo/AhUFkxqC87SpA0Z+lhcwLehrCRM2McRoGCGaxZ7/h\nnG+Z\r\n=sybA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"dd630c93050c5ce39fff5133a494c1c01d13c60f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.3.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.5","eslint":"8.6.0","ts-jest":"27.1.2","prettier":"2.5.1","jest-diff":"27.4.2","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.8","@types/react":"^17.0.38","@babel/parser":"7.16.7","@types/lodash":"4.14.178","pretty-format":"27.4.2","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.8.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.1-dd630c9_1641287754115_0.24660420824731477","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.1-a79a5bf":{"name":"@team-plain/react-chat-ui","version":"1.5.1-a79a5bf","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.1-a79a5bf","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8cf0932d3b51ea457657ba8013be62da80ddd9a4","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.1-a79a5bf.tgz","fileCount":85,"integrity":"sha512-XHZ70k8NtvL/Ip5V5APkBesLhodFsgHQ1wM+QNe36vzfOM4KhygfM4GEgeyVohZiyIhtxcQYGZs5+/BqkyEr9g==","signatures":[{"sig":"MEQCIH5VCnIfSfbCir0fSlFNx1a+s7acwGwptI6AnpcgNhZQAiA8LlWoP/YFuk7OFRNUyRQHXKhjrrFCYujmRtppa917yQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3AErCRA9TVsSAnZWagAA2t0P/3RihilBHeNAtvXjEan6\nuCIYrmkUzcl6Fn/eiah7VMIvlbwZWWROpmnw4zaV1VEtljSVLbKTngxxF+PV\n4+K2PfQ7S5FmWmqLoMOEdr7jKDDZKJd+a04Di+dbK85VFDkwxGP1mGnISeWv\nBlyxO0tYKXQ/LC5opcG5EMzJubDajknEsXTwhAHZxP8WA3nw9cqiI9ecWtVT\nL6fD2mOgsTO4zaGaIsyU/x42tCuNZfV5vE6O7jeMM55DFEJSk9GneGiCQwL6\n9q3EF3kE/ony3wNItas5f0SqbNj5ftdMfi5iXFPecnJKRop/oqrdhjS4MQL1\nOvdHUxSGM7EJx+RoXaIikIYzqP1sh1lz0ZSABtasYjw84lSH490hANNG/MId\nVTjrL16G8MgVostaaOEf6C9q5mKBxgfgLzREfrW+mCrbwq6R7NWa88THn6xs\nGrNGkCkZSsr1dL7nvIgSUSbvx0Ru3MXPbTo03lywmWsbODZV5KQIbkeUclsP\nQjAP+GZRoLqgpNb8AARZzoQbGoTdpa8UXTuAV5fn79FS2d0Xflb4SKvsh6vm\nWAt0TC0wS8RM0otonc/lpTwZUY2Z/dUTz5OBAPm8OrSBzVP5TysBfgVfakYD\nHveEdJMzdhiEqmfIrL66fo+NCeRW9yYH/1Fpt/taQVJbDiGQE8gzw0As/kTY\n6HKx\r\n=hn1O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"a79a5bf9b95efb7319637a3582dbd891c118b16e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.7","luxon":"^2.3.0","goober":"2.1.1","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.6.0","ts-jest":"27.1.2","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.7","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.1-a79a5bf_1641808171496_0.08129831326360337","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.1-2100b3a":{"name":"@team-plain/react-chat-ui","version":"1.5.1-2100b3a","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.1-2100b3a","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0d55b647b613c426cd607b083e1dc4c6529bba7e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.1-2100b3a.tgz","fileCount":85,"integrity":"sha512-n9ljlKYB8vRMoRGDWP3quC4vVyEwCTJs28WwjcME9yrkgQ7/9tduDtND3sKPkcq2S52+0aOiv00/Fgtz+feDHA==","signatures":[{"sig":"MEUCIQC6UEStWAWygrBGMtVAZSlc8c7sCPVv8a9oLfB5OJTGvQIgEqnR1jQ0uYTcwPWx3nOQIrsucN/A3TmmEQiJw1w1P5s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5TtqCRA9TVsSAnZWagAAsO0QAIrmqeN4/HZh2xlznMH8\nH81VYOob5wzM3KimBdovSyfUWfwMEodHl7VLxlZKQkV+mh6r1NKv1RmCUC3n\nVy3/JZfGrGN5l2QHbJv1XW4d+EDL+6BrlLQejLUpOn06UWWHdwYUATxSiIv+\nPudshiKOKsELSy0OXk7y1wFstz3HCh8/5ADGawN+7daI8cTMv8nSzmoPHCLA\nARS6CGtceUBOdzrVieeoT5++Pn688O4IVUvW09J0T7/Mcayo9qBU9NLC86p5\nj6rr/6CgMT0qPq4ZfBPP88kp+IskZ83Sd1EaI83ZQrvf0uBX8UiLQBP+J078\n8daeY1LhmZo17QNBTnDfb3i3dAMVTEJSefE8O4r1XG9k1yneQGWW233L1RzD\nT7VAKqJtfJcZEzJ0ocd2em/9u8nODfaYIB4uvES969pBRwy79qY7mxNyND1X\nzmx064JNF4PhjeuWW9QcMRvjzODMihTdDCKpUE6Qj4n+SLcCFBjZ8Qmq/N3q\niGsfHPU288jfsfu5sYabfuXQR2iaijuxvr/pMSrQ4y362kV5u1oSsW+4peQL\nz2JHGKQKEbvzJ1TFTBjo0J7VRMW4Hp6shMacERzX4G9xV2/fDs6KkI6MOUaa\n49Gko1IoNGoAwvXDaBh/NrmZvEHKRqTjvsCcWCF4YXdUeIMwg8CYdRNhHiOo\njs1L\r\n=Kef9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"2100b3a6c28725488f71b1ba48518f2eb409388f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.8","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.1-2100b3a_1642412906615_0.6803459279410993","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.2-39fbcb4":{"name":"@team-plain/react-chat-ui","version":"1.5.2-39fbcb4","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.2-39fbcb4","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"5382a7cd69d1e1dd0bcce03464e9d8ca4043f23e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.2-39fbcb4.tgz","fileCount":85,"integrity":"sha512-2G1RzLHTyvlHimeCFbuCK7D+wremwWt6fsNrKVawdn/i6/rLR6keiTPCVzqmDt6s07NX0+0DJtSRw6XTONuuDQ==","signatures":[{"sig":"MEUCIQCAaHMps5Omg4LOS1Bce8YQ8P8zgyJp1kTz1wgqXlTyVgIgAcO4rw9BnPuPE6tpWnzfpB/hIOksgKizQlKQdL7vHCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5pCxCRA9TVsSAnZWagAAfskP/3+mnfqlOnwVXYXoFYkO\nUgkk0INm9l0oLQ9kIBY5TxnzKaYc0JQ4judxDHXagq7527f0k/cX6v10100E\nFH8PDk4HpxjmKr+sZFU9nPDGUAagethlzwEEErFgRffBdVc6z2Ab6ggNeX1k\n7kBfFv5w/BI+6gFS3w31gXD3Iptc5yH+0AK4se0AGwmXmstOfGAv2JTUEk1h\nHV2D0scDskNaYgC7SxcHRbvjJD0Wxsnbp20kpcAcby3ZsQ9LbYKWLIKaVRU9\naD/QhTKHmwKQGLX/4iOJEKMm8o0yeyCeVrj3cvAcDJ6VyUpT8dniKNrQJOjd\nGattmYVok6u62hdWzLOBOMIIOEaqFfIS+fRjVJym0AMTv4N87bO2n+xq2f7h\nFOT09ipj/cX5WGML9saCPhJBJKcy8wYhE268vSI7ih05vMbtwiAVfaciClco\nYhALXljgXy1SforEn6KG3HsSg2laP+e593Vb2TUcoVa3Q7rUJqMPxPhHqL2X\n1o+7IW2K+0X8NlPTP6IUqJPLN2bQFr/QislF1ufBRIvy+wDCaNygvhgA846G\nnk6F8QIZyoseM+078rNbYsCfEaOStGDutd5NohGXrr+cybR5kWDYEGNkrdgd\n+lViH/pTYbj8vx9YloJjaMVnXI5U74FM+2TIVJtVAwhQJMiWWI0X5dxSGFad\nq+Hg\r\n=L4MS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"39fbcb4703763c8db7e250daa9d3ded0ef6a672b","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.8","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.2-39fbcb4_1642500273408_0.8113838173785801","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.3":{"name":"@team-plain/react-chat-ui","version":"1.5.3","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6fa2135a8bc9f1eb6bdd6fa3c382b859c26bde87","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.3.tgz","fileCount":85,"integrity":"sha512-PNsis4ByQYsgmLdCdn75m18i6+6/1ozk6JMdqsR8rZOqaNqZVg3xibsAcoDZgTz/aBvnQRc1J4FjkgDBQu5Aeg==","signatures":[{"sig":"MEYCIQCBdmWSh7PyLRWO/IJRNxPeEfG9MLseggkbbjc4pB7o9gIhAPDFCzcV2LRiC/M4cukPNJUwxS35Nh2Kv3tVfeCBBCsR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5pqYCRA9TVsSAnZWagAAotIP/A853LbD/FIJtk8KokVc\nCFHjidXgjY0bkdAGpnn6M4ID+XSXQYlFspzGtiw3jsRE9aEVrBf6Seji+xOG\nk+n/bADybJiRPNJsxFnc9LwcvHWlkvSAvmPhfbAfKjbiEgCZXcOIPYSpcmR1\njqJO7MZBYerPHhKZxHNRHO6VegcvJxbVVwwdyghvEmDv8RS9FdCDrc25Ghqo\nZXBDzEIXOzQqS4PZ+lWqquTswb8h2KTh4QoDs1l7EGk7odCJ1YyHm6VBE3G/\nuSHjC1Z56qVE2JufExvFSPW2JxmGbU67a3QAuTs+UIC/EduFdxRck23vnna9\njXG90RwGjqKCGH3Cn6FCJPM+SyzQgD4VDebhDqifjSlMCy29v4DUoysGTAfK\nr1DAKqBVqpSXAAeX8rqeWOgePsdTIwptcQ9fiarHQD/BMHVSZ+ki9JaVRkR2\nXtCpy4mP6/MYfvrMZTaAccmbONnvZIB5w121/OSMJ4prAl0BrqPjphE0bumk\nprYRwQPlTKGa2Uxb0GiI/2lE5Fls3trUdTuN+3f4BQGyBxf7s5WayVi7R1zi\nLxBFNdsuwgoHT1kMG+iUSMcLXrhxs3CJ0ZYHGhGGXA/j4t5v5/HL4OBNnK5e\ni/dl64x0ynRyUlJ0WbIwpMaVC8jXnh3CMlGhGFGm6yK/3L5YAO0dc3ISLedX\nSo+a\r\n=//At\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"a56d2255a802870905ce6e0c24404fd695c8441f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.8","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.3_1642502807905_0.020525902696081788","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.3-a56d225":{"name":"@team-plain/react-chat-ui","version":"1.5.3-a56d225","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.3-a56d225","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"33b2facb0fd8d661a5f600ab75d586557a41e106","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.3-a56d225.tgz","fileCount":85,"integrity":"sha512-oTyiLK7tBvIkw1mqm3koa7OCNLTLYN7D6eYKz+e49+NhIvw5Mtc/u+ks9qdtKPYTYOPVdh821miaOWO1g5wJjg==","signatures":[{"sig":"MEQCIHyDWH3Y/Sn4Was91OK1HFAc2YP3aTwTUXrD8+02Eo3YAiA+c0BaqV0rGpSfxR6/cV4Cp2cee/xnfpgfBxeLVSttiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5pqaCRA9TVsSAnZWagAA/LAQAJ1/qft2QsDPRPSlZxBD\nf4nS9cNAYP1iTQS7I7qXZg1a+nTToFIRZa/JpUwmw3H5DGvzyVA3+AhHAILT\nDnncKENteKGpnRc93SR4tI6129USbEiW/85V5d4m0lHwN6XR/wig7ffTH3Pf\nVMHavgRDH+vMb0h7RevkMpcUUKXiE6T8MHA4IG7ynYKlk6vxYVrR72PZ1w1P\n62EhOC44woZdMtTBuYshPmYnj0bC4DtYmKWrh63v75iHXiAC1QiUQ9n/Ko7G\n6i+DBq69LW16y2cgwU16ifU1o/ImMky3tKV83swgJPfKx3md4YfhoAj04CWw\n2PkKtM8DgLo6mTU8LBxFNp60GXh98Y0rBUs0TYYVqN4anTAAlkLof3P2KirX\nxApzb45YB0OaYnW8QwyXY9x38YL6xRdVqhSIS73IqD0axqQzz/4qi1F0wiUE\nnJapDoGOTq3sqbKqf5X5mHboPQpKnDjeLXtsxn78V9W7KVzEz/jv8Rr2gmwG\nqieM4/pbYTEjGVnvAYl+9zDIcxg1ITrtHQBbeuAYLKOnOHJlonHUOCkA1DKm\nlf9OOjLWIvP16ZpRJykmozxVp4Wj7dkVyC6TyCc3LKgoriN6ZOD96KmxuDjv\nqHYdudlUweKi3k147OO5KOwpXm6LZ2Xa37hab1mBxBB6cGRlqZADtjAWhNfb\nxtmG\r\n=ELW2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"a56d2255a802870905ce6e0c24404fd695c8441f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.8","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.3-a56d225_1642502810856_0.9933300813888495","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.3-95fe018":{"name":"@team-plain/react-chat-ui","version":"1.5.3-95fe018","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.3-95fe018","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e82d86fc3b14327e6fbd8d37687039d2101dae0d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.3-95fe018.tgz","fileCount":85,"integrity":"sha512-e/JZYOOz+0iMPriSG6o6pQ2CX3fdYXwsgk3YE4D085GD8A2GTRNKxKIEPQPOoDpG+R3WZ3BtjMPg4Ot9Tb+E4Q==","signatures":[{"sig":"MEQCIEx7ldvqljTyy5P1CFKELMEek7b1LfvMZ3qNZMMx1nhLAiB+cNyPlyC99obUZRsmc35f71fWd9VXukARqLwB4TWBnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh59ohCRA9TVsSAnZWagAAQhAP/0/qXQCgU/soSuW1Cyvn\npfT0EIOfVMdAUGUOdoFGVC61QZzLirHG5jbyK2K/2DQIcxWM1/7KMGqGbcaC\niFR/16PFvL5iuJgPwRercxihGm41kei9Znezpw2Y9y+U+mOu21xfaIYwhVNE\nrWuuOqEmdit83BA4QUi6kWQBCxnGrhHkiaTWDNPQRHwJFTnY8H43iHhUDyNa\nqGlgG/UEYjUfxnXgc+8KZ4VT1Ki3FvrkqrOfitxyz/9S9xk2F10Eb11WK73f\ncm/r7YyeTcaloTbU/EH6OTT0H2LNltL60okrfgDsujOwmUq+5n/27h+ZAdZ+\nsTonn72XM/6zetb+VcjMdXD+ZM/oMVs8dcCMNjVIovN2bUTGS+963YWXwoZg\n1oeA6bXdSoUAq7LV7w735wsTI8Ve+OmKeHwped+mRmXVBeYUC4UJoEnXYBEi\n8sb7qAkFuXWFJAC+3Tg+5iwNvNDugOkID9YbzH7y1q71ii5Wgi5lvJjmHoJ9\nm5V2ZYXcTOOf6Lnh7+89yfgdo++lAMztdmfLOuc4F6sp8xB9qAhqw4bG8HCl\nepKQKuM9hNb6/ekG5I3BCuxHgH18HKpnUoI5DBENvui5uoIAdmXZu5xUl1p+\nZXsiWSXDaTd92RljxG7gviiBS31dgNPKByFW+5tz1iB1+8LYZQtP7uT0hMv5\nnxTr\r\n=LKqA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"95fe018263f07f9de74eccce4d168711ec9bc24e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.4","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.8","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.3.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.9.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.9.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.3-95fe018_1642584609103_0.06918470487472406","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.3-525fe7c":{"name":"@team-plain/react-chat-ui","version":"1.5.3-525fe7c","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.3-525fe7c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"5910ecbff9daf4d6546c1bfdc54579aba619b6ec","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.3-525fe7c.tgz","fileCount":85,"integrity":"sha512-A6Qk6pMTWOz+rbQf/NKj/s464pbwDi2xyp2dwFi0NwUfaAuN1mpe3KNKsrCTJ+ZZh8Av4FnWryd6f5wxH2tcEA==","signatures":[{"sig":"MEUCIQCM3vFAPJ6EgCgtmVh3kKPSs7KSYfUAo9M5wVM3dQcqGQIgRk+kwHGpCHDqTgevUTBItvw0xj3/kmOaUsHq9QY0+Tk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh7neOCRA9TVsSAnZWagAAlgoP/09gme3HKwoblkDxC+Br\n6jOlEmzI0LzPX5Y+Njw9OTZHrazQBKirUIvDUg/Tp47u19AWD0ET/3TCakVy\nzCuRF97y/DeeqzASuQzKJAxaPZ8xR8lFvMR1yuCL+/JNjY89GRmeImYxY7uN\nqrrYWR+zIAwPo8AxHATtZ9uyYV5KVqnHDFPZjym3XqNcdNDz8+ukfbMIGEYF\nbCoD1w/klMKqO3CuxmVdGGBCb4tDDZE+ydAw4UUKCAt7M14hSCeJHQhUMLQg\neFFZX57/XWWcRfALztBNp/nCBwo6idOfdQQ/SqdLlIjU6jUoC8d/8QEEl2tG\nZ42QCDx5K+K0ZEVYcunCeo9K0X8WDF4vkXAIMPz4k8YSYs5jCAhXIyI6QW58\n1nn0HGqege6SPbLUNpg/PM8lwK+mNFdBJ3JfP4Y5I94+85i7luVI01deBCrv\n6LpMX3PXkznsEbhemkHuLbV9smT0L1hU8ydd1Mhhw5ExZtQMlWJBDyTTsFxh\nQrcSsXAYrLqES34vI19g8PDFGoyjmbUnP3rxvdu04MCQiTUrBQMTJpStpe5U\nk076uYevOkP9eih54kaYpPEvbxTHxdcXbuDXXCX4FPHyRRJcAxolpdNFtt2u\nH1MgpT1O0d5/GRGEVwOAYN/kxIyDYbNaOfcvfEgdDZz8N4dyKFhgknp38ZGU\nyt6t\r\n=u6j5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"525fe7cba430850b7077e21670d76ed20997c8a7","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.2.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"3.7.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.7.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.12","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.4.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.3-525fe7c_1643018126635_0.7476684611651085","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.4-b880ad7":{"name":"@team-plain/react-chat-ui","version":"1.5.4-b880ad7","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.4-b880ad7","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"12fdf80aa78b7c26f891d2276343ee237af82112","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.4-b880ad7.tgz","fileCount":85,"integrity":"sha512-qs6aEMyqjPdk4JragLwLPrXXD7+kxE8is9h1ZoL4e+tYnAiAOsMiSNFWYtfHFA7g8EUf+bWSnbMAsugZp5wJHQ==","signatures":[{"sig":"MEYCIQC3e+jWt0RMuMlqE9K4qZlAtJaRxVRFpxgm8DKMW2gQXAIhAKhBTd0rv2zf7Dhn5APjx9QHsdCIxg+POPf1br3Whyn7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/QNpCRA9TVsSAnZWagAA1OMQAKNfPdfrc3AyM/nJSBKQ\n06Evce3D4lDFLkistZGu/D0s3sLDR7nePtvszEoMd1qKUIoLBQLW59g3gNI5\ncXLWLq7k+RwLW9X6RMyi++bd4YyxAuJRtl/33rm1SjBwykdlJSzANzTkk3bN\ncYG5XJ1u+8Mxl54gfC8pnuYcuuqK37Anu18azVVdBw5bgl4EVvJ3GVWiEqts\nrNpVA7npeXJJNT3vR8peWqasexhUkKWhiLiuvE6gOhWOv+Z12mB1MNBqy2rV\nQSIY7fN/AxCXLajIUxoc7+YXfj3kChhzw+7E2cTWclRFLSimk2Y5jKBz2xc9\nrGGTt9GpNPsRzsZAtWfKbscZuiHb5nGxClN1SCJZzMCKwJGXHJOHLmKR+sC7\nFlh/DxLcFCGXKzB+oOKLBZ/hRmIcpOfgEl+SJkm8xgu4qgMHzzhx7UwLNxw5\np1X8x/Xhc0SjzwEnIxMKqA3/fgwp62PvapnVNwtJbHvRsk5Z6U9DY6yy/IOW\n8Q77zOUtzD7JzzNd16YnlDmpVn9X92gsiIp3QB8E1cjAiV0TqVMtq/7nc/gi\n240upoK2rpQQjQrcemCCcC+VQg5W2r+nhQfuzMrbJR8OE/k3KDdiDmipOZwG\njp97Mq6SnBQTr2s4chyo2g9Og1WFxc2ke5tAKAaMrdxosRNYNPo7Ce+OrlZ0\nYnt8\r\n=rHAC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"b880ad70ca01e6f60d7a76f3800b1f14c4fd31dc","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.4.7","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.4.6","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.38","@babel/parser":"7.16.12","@types/lodash":"4.14.178","pretty-format":"27.4.6","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.4.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.2","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.2","@graphql-codegen/typescript-graphql-request":"4.3.3"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.4-b880ad7_1643971432650_0.553034911528077","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.4-8aaed15":{"name":"@team-plain/react-chat-ui","version":"1.5.4-8aaed15","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.4-8aaed15","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"10a8f6e82748a50a6be2215ba7d692007a26900a","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.4-8aaed15.tgz","fileCount":85,"integrity":"sha512-ez6y0xnhkPq0RZtVBfvNW7QFUk/UA3zt0m0vicbhPaxl4Rnk09TaGOQD0DBS4gqzdPpAKa1/n7M816YtCdlqFg==","signatures":[{"sig":"MEYCIQDeJTZL07/sOFLq3C5bOIS06UMOSzroo1hvdfLQOoJ+fgIhAKrs/1HfVaHkCqIX8bSyDN2Tr3wyErX9Ms3t8AKYfUN3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAOS8CRA9TVsSAnZWagAAG0kP/0ajLesGRpw71DEgKGFO\nvboj2FpYRSb09bocEpf2aPKqAF0xxKG4d3BQpYsDtq6FCnZem8eHpJ8/XgUk\n6xug/CT5xnRN5cViVbQBt/EG0UWTr3SNLw3CKdbX395K4+3SDRh7rupnKlaU\nSxQrZ+iXXPV/ZcVklGE9Zf/GC6ujAwE+8qBXuN/roIeAch6L9evC4XA5mkLX\n5vczBM3Qvizjr5e4jxCOo2C72cPZuWmGdT3NfdXMDo6POQwsQIQS1ciyYJVT\n+MaGoFpn9erwBg9IBIBDWRKar8UhYLwoY+3sQVePQPC1UXjlx4ISPikaHXf1\ngdgpc8b/qxqGNGwJdHLkAxcDhtvDGl4Vf/0+XElm7ljVSsBPl68AAPLXckLk\nFbfZRlQ3V/GNoL+1K4Fc7Ueuu1efmRFAjUQIuNsjVQ6C51YCwAbaehJS8sIr\n3zFE5qfkeCXn4Gxfxj3Tt6fVFrSKbQVgOpS9qqby/g6Ya0MFsz/P+eSyCnRn\nEJreT62VLfa4ZmvERWRcIgg4TGqx6jYjqvRwN16n2PXQ9hUNkH+M0KVX7Pj+\nbZ0KQRh3E2cOuUJDG0ZIVKWK4rQoR9wpksoQpZLlLfSnUgxDTsZtD7ljS0aY\nyohMGuh/g8S9Q9bXs0cnStZnno1p3x3D6yL/q8qOajc5XygV8DVeMwb2uglW\nNTN3\r\n=ThU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"8aaed15acbb995d7b3d524e05e87dca8331d47d9","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.0","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.0","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.0","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.5.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.2","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.4","@graphql-codegen/typescript-graphql-request":"4.3.4"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.4-8aaed15_1644225724215_0.5039195083857599","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.4":{"name":"@team-plain/react-chat-ui","version":"1.5.4","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.4","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0f090505dc9baa40ccffdf1ca512b6c21caee6a8","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.4.tgz","fileCount":85,"integrity":"sha512-9QFF84JDT/tlF+8QVwmYU3uSODxF5GHApecHg4CFA65LOVMkCxvgh3/Lj9BNIBHavArBgKKVuQotLQFpnsDEDA==","signatures":[{"sig":"MEQCIEwZHUKduob4eCZtVFWZPx/uIcvpkK8neaVirYVCX9Y1AiAtfYTWE64/FlHE7tQr5pixvaGZF7OblQNtN2nRgkZaWw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAOTECRA9TVsSAnZWagAA1nsP/jKuKQQTuWv3QkBDinrO\nnfdDy9ExaK9/deFHxVIfGUFPNACzpgg+DOOoVtjjBfr6H/1yMwizP3n+vemZ\nJYPB9YSI+vg8it1cQiGiBHy19W64WbOO2o02gV2YPTbpxIk4T+r0OR5VwfdT\nmn/zScp2ReCkd76GjLHHWwvyuY08SAo9bIgctUQShdNxZykQmN+cVNrA42I5\nQEDqjNBALYxENxS8AGWwN16jBXUB9ru7D9P+FbsIjX0ut4CIZHdmlcyhm61S\nQHSbHg/FkhE3/AE3nDs89dB7Xu+QzCrGJzFm/jtSVUQwYOt5PIkQ+Xn2VBug\nDfKZybdUwvMnoi6dj5B6oxwDdi80X5A+RIUmhFaHL2kX6ENDKlCNAwvmmLNB\nipndeEl7CrigJpfHibKEUqql+pKadxrZRAMLD0WCc11nhKHNUJWZAjWvmQ5U\nX9geXpEtmOSkcgpNHR5FyIGhD8btx5Y/g1UCmyTO886gxHbX6ROy8odWpev7\n64Ux0ZjMuMG1BAvq72Pd6L+Z9vftcoWkPdxFv2q8o/wiEtM+sNdnkOz+wWG4\nx0wVW/8otixCKDIwXEjuH7NqLMKhpmVy9Vp4FXHjRs56CZi0n+1Hw5PlqTB8\nr/BIffrF25upi2yAIKLJyIneBEwJtWncC7IOQmVh3KvQYypnipcJv436gdWg\n1Ql3\r\n=BGdO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"8aaed15acbb995d7b3d524e05e87dca8331d47d9","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","preinstall":"npx only-allow pnpm"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.0","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.0","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.0","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.5.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.2","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.4","@graphql-codegen/typescript-graphql-request":"4.3.4"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.4_1644225732231_0.5089992967547878","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.5-eaede4b":{"name":"@team-plain/react-chat-ui","version":"1.5.5-eaede4b","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.5-eaede4b","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d601e0ba781a1e95039fd1fea980447a1135ff18","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.5-eaede4b.tgz","fileCount":85,"integrity":"sha512-QXOeitMAkIAljLoh43uvu3gcgg18pS5WGvrGT1u1T0Fq9pg5Bwl1ZncQEGvumdAumjwHWs0blkK0xvAzN1Bt5w==","signatures":[{"sig":"MEUCIDsMIi9lQVcxVESZnXyvaPYLd8n09a5Z3mxbpd3w7lQEAiEAu80fyJ2HqsxO0DkrnLGzp8kFMHup1TpzHecTymhGbIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBR/2CRA9TVsSAnZWagAApPoQAJHfL1Hw+X4RqpmVY1Z7\npm/gOswk9C/wXN4KGXGFzNuI3t1zXSlDpw4WDPtUz0XtSObMhtX1SThLXF4I\nsLD9D1PC0sciXopA127IVkMc/p/qYedJfzl7lKUnIfToA9OL2W+3p7y5ZxkD\niq8xS3Qh0CSIL7/4/PL7xukEY7sItXb4bcNiOa4w6afukaWsbB63x6dnzaHt\nxbFSWmMnRSi3yirgrsueOlq8AtEJGILoZlMtFH8mU8FkhD1MZfWDalDTGKVp\n7von9LJrBAwY7kAfPosq8SpKS1NHAH8ZDVnTmRjQvPKEHPyI0j3yB6eT9+Cd\nIgnDJpUJtI/W7zXAz5tCs0Crvt4JC9EWjpwLU3gkxnM9H2JHj2SZJoe6+SXN\nTQrEY+41QMsEi/v3Zx/9mDkoCSu2x5LxgnjxWJcXot3YA8ExjSq2Y+uVXbLS\nkdFN6V3tnwWsO07wEGpUCk2bno7Uuy8eC4DAv/vG9P6VCjwhqyHoVtL3X9Vb\n5G/lo9pb/GVmcsB4v/nkMUewcJg+aK4WPWkwGDYAhGvyzxqLoJUZgQL8LroW\n3Z2NKG9BHABw2LNqGIepbG7ZG7vr1H2W70g/uujGUeGdW6NaW/d6P5ERnHv0\nnbRcSChBYBJFdowmealqf/EMf8msHrfYr4hXcpFbRQDFBRWdpjCG6eglQSKA\ndbFH\r\n=/VS1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"eaede4b46db51cd0d673212cbbb243d66ed1d8da","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.0","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.0","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.0","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.5.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.2","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.4","@graphql-codegen/typescript-graphql-request":"4.3.4"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.5-eaede4b_1644503030842_0.2351666609705123","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.5-42851ae":{"name":"@team-plain/react-chat-ui","version":"1.5.5-42851ae","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.5-42851ae","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f9aec97a9b0724d2c9a7b1ef948c349b708c72b5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.5-42851ae.tgz","fileCount":85,"integrity":"sha512-FGtBPs0K5SbwePbyjzv6h+r6CekeXBE9szQK+dRr1Us/xZO4z6OHPaujuq0jlP80Q06YKB9UBrwXtwJNcZskhg==","signatures":[{"sig":"MEYCIQDf+z+qs+yevbGTK8FJCTcQvNCIIzS9eO0NhN3bmFVhgwIhAMjqbNn1JOqXTO9E8zYnOeixsRO1OYRc/WiMy16umu1O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBSg1CRA9TVsSAnZWagAA2mwP/ijUhVyfccj1i1icRH6g\nm5BE4szvQ3P/F8RDCZVNaq8HVtaAIxMAM6oBM+mQZq2xZOqlDQxaZIKft6zv\nu1IsGplEqmEApdlV8mMfbVdEE25dNyMSmEiYCGFArk0pStXvGRrQb9+3dFuQ\n/iIaRxh44sgUHE506KLFH0ykdMLAsPF+9hpLimaebwn7JvNJaeoyvSoPCwCJ\nW6aUHWOXvZMdcrFotp9xbXeu76TRlkE56YiRvQx+8CfU5IxVVSFi2m/VkET9\nXdz3kFf+pZlkdjKVpotfHuHCYHTXwcCkv518DPH+QFVDs7D/BD0Sf4XmOZfU\ndJiuSEx1Y3ugyThXVzeo4+XBBKWatSwvG8VKB/tB7gbccfs/5Jp5WSOHniy8\nDKU/eVsg/GtqwN9V4ZHgTlPt/B9SHyIJavDqSZ8l6SSfZTKcqwvnWFoFCppI\nQtPJkQO++LAqWHFwrc5A+cPLJRnyPFzfVhzRz6+bBVtZsE3r6ijB2GJL8F6T\ngij+e4WAkkXR2kgi3jYdD0QrXIa9G/8sba/syH10A/guta1LtaBfYYSfxq2P\nEF2pi53xRy9keNLUhYxIoAMXXcFn7ikgSXHzZ2kUzbq35x7qJtHS2CNvL86A\nYsEXSe/1z3bf6vtVDsMkWs44EnnszjKAaZzJmvsBmQfhUacoXlK3S1OkgP4A\n4SWp\r\n=DCW8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"42851ae13c6dcce99a48e7b6d385c25733543374","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.0","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.0","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.0","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.5.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.2","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.4","@graphql-codegen/typescript-graphql-request":"4.3.4"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.5-42851ae_1644505141483_0.531047010859784","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.5":{"name":"@team-plain/react-chat-ui","version":"1.5.5","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.5","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"31b7a97ac995f891589e4afd2f8c208a0a0e1547","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.5.tgz","fileCount":85,"integrity":"sha512-+9A5+iD/CWWDAghm2+ykcIWE4caY+32KohDeuire5uP3Pec/xpVFLkdlk7xFMQpcHADh8/Hd3KRkxBSfdl+o0g==","signatures":[{"sig":"MEQCIAU3X2nyj41chGNtkY8q548k5odQGkBYhUuCxKhVqalEAiACOlVulh1IzQCb2eCHW71wDlIU5qL3NAmy9gvrBPo8hA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBSg6CRA9TVsSAnZWagAAIIEP/0t1x4dU6d4f+fDMTpwp\nArSjUzUQxXQcYSN6cOfbWnS9NhHy0FQ2rsOHTAsodt0tcj+YPCJRPGUXxmSl\nO4hlTwGoqqzF4O4Z/o/cYPzoCmVHG975nPV27rJ5kO6FDY3EUFSN3e/Zzg9B\nq4mQIDnSFCvI0FFwYNKj2idYEPGyuy1yQnKqMnG6//ofJOctSKIok6bdZ7Rw\nj0CGRp474XwVEF4PuQ3lz7psvV6srq5ox5CeB4k3wkyazOyrsHdLDqnvupmu\nAkgQLOv8DZO4eAAwyHIEZrpZrY7n2ZXgwh44LSbvPSs56EYVNtZAmFonCKc8\nUJMuPhplCBzs9NiDSXiqClVDE+CX8s9UFpaCWLzmZemOZckxIUspe2/R1NvT\nP/HSQWOLSeIr+XHyIywFdTeWdb3Q4ESfTZnlYgeLJDOdmw+jf27p3N+FLGTJ\n3ZZbG6J1LvkuxOb4Em49D3Zp4PrhjTsb4g7OUfCR87v0BwrHKkIYXyuLABSy\n/LrgllwNJoDZknjDI7Y2y8S3uS2XlircFwG5xqfJ1nx2T6GoRULoCsnbK7V7\nfPEE/P0MLmkNaGzpM/FBig5ZQBdOkl8FGwn59EK5oZaElkt1/6Xd2bibOgTa\nLm9aZo8LFtSgbqyEZGGDxA8XApYklfUj82US0Ev0tUgST1wsHfSzTR1tw+nM\nhoFn\r\n=c5eE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"42851ae13c6dcce99a48e7b6d385c25733543374","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.0","eslint":"8.8.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.0","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.0","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.5.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.2","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.2.4","@graphql-codegen/typescript-graphql-request":"4.3.4"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.5_1644505146111_0.8153057329699334","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.5-da49b5b":{"name":"@team-plain/react-chat-ui","version":"1.5.5-da49b5b","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.5-da49b5b","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e3956476963020ae1371e35f0de89858e775ccd5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.5-da49b5b.tgz","fileCount":85,"integrity":"sha512-JHesXDuxfaOQLONaUgfmhLejKgZtQoVC6uHiwFMaEKuq9i6wd6UNn6cc1WzQr2ZROoumPxnajU095L7mqCY5hw==","signatures":[{"sig":"MEUCIQC/3Xjmjk950lh1NlnTPR+WPod3ARudyHLSCCvbqoDTwAIgSENNdc/MtsL5/+31z7jBnIm1mUhvlRz8Cq9u42Qen64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCi30CRA9TVsSAnZWagAABzkQAKRK0AkNB41bpBNvVcNc\n6O0gKHl2RSBqcX0XEr54wO1+KEyRAbdc2egLNn+gTCTovwld9ksXq7pomq0F\n9zmFKE9cCH/5C7OPrizF9f5MmUFuVmg9WVR06ZXaOwXd5/PgtrMgpAa566oJ\n8RRHrgoh/7R75Ynd8okw+q4JhGb5BWKD0kATa8N6QoKA+ldhQB2tGLXzi+9I\nNNNczLRgRjgm9TfbtmwCC6PGyZd+l3B/0+IFRqJ9znX8k2D0oWI1B0slcxWt\nSoz4rSg8p3QVSo4gKVW4Xt4jrqBgf5PMCq3yChr39YJMPFt7tKbOm0YP8/Ef\nmFMfxJnkjxqt7Kttb6+3VqfQsD/5dtZkC8cCKDuAN1me2JB8RCBHkujBBH3q\nnYcOHqbXpWd0TjEHcuz4HcOKdCVoPb5zWL1ypKLg5G7EAO4+LQULBYcxwzLg\n4nh7lZdhSiGrVMTPOn0o5ThatAjsTbG/80Pze/4pp3fWoTtO48N3U8qkEZiO\nWGkkAgRpr1qhppK49+X6BWKBIvFWsJ3Se0VIMvL1qE7BszVckTHd5l3zPxM0\nhnX7r0XeQYw1gX/ocv8wOd0fo441bhjD0+W0j2q0p1zTDTxnfDIyIky2pqO3\nZ6+e5tFj54jN9TKgJ8VpXelRmAX++aJ2lNxm1jW5CkUJFTY/IAkzG3jo8rez\n2Tgr\r\n=dC0o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"da49b5ba1fdaf959508f8fc8077b3c658d129654","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.7","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.5.5","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.9.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.0","@types/lodash":"4.14.178","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.1","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.11.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.11.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.0","@graphql-codegen/typescript-graphql-request":"4.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.5-da49b5b_1644834292315_0.20609217984451145","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.5.5-a481c31":{"name":"@team-plain/react-chat-ui","version":"1.5.5-a481c31","license":"MIT","_id":"@team-plain/react-chat-ui@1.5.5-a481c31","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b7d7d90e0a80f20250dddf07b1e893d0f2f389b2","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-1.5.5-a481c31.tgz","fileCount":85,"integrity":"sha512-adsq6km90KLWpgzDegTXwFrcvJBvqaOL8wbIyknPSq6gr3TTG2V6zj5V60mLyZDqCoZ3TIK7D9nPI7egRURDlQ==","signatures":[{"sig":"MEUCIEsHt2BybI0tJCHEONYhFxvVFjyBZmSrQNLf4kNTnNq2AiEAzTQz6io6CqZ76i3wovl6E618HBDSo7I/Ey+2zIxfvPc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE4GFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFZA/+PW53uuAwez/Bdeen2euNxN7HpE5FgxyEc7ohlEqdLVbQ/S4A\r\nxPR7cu4sM/qY80Y+O1kPBj5AmOaL0M5ncFc47JOqSl05W67aPFJAP61vDB6d\r\neJsaOShAlcQFyqa55a5CbrHIzGUUN91fi+moZMNzxV7dOoWot2fDxU6QVI72\r\nPdS6HMBcMnXOALTD1147H1t8Wn9umMKGHOjALX0Ct9bWFRWHHichOfQl+JfK\r\n5r5xcqafDqpnS4gdks7usplmFqMkW6qZb/flgUgvCyY1KW9CJ8kXB6bWzkyh\r\nMaypYXJcZDyeoIDsO2+081J9YuBl4SNNn+DTdGFnvugr6Xy+27l5e0bzcxYN\r\n2rsJvr52cX07T+cqrVAgE8PDJWmO9BcSzMPGi3pWDHZNDQCsQ/Xv19ZHS6Xn\r\nVizODAKpC2VvQiL9oyexP+0KgnC54zQ7nO+grMaxGkKBuI2pCMVixVYFEXN2\r\n4nk6wlRwiulr7ewOdz/YjpnJcNGUlnUni9MI0Nt8+wTo8H4biYSXRDwEc/wp\r\ntjMjQ7ETSoH05GTa/IhxgIDbGbDp3Stgabh1VREikUffZPbY8wHDfdtD8wfF\r\nYkCEEQ1Q1/IrJGmx6WfZbgHjtACzdqw66BgLknbAlhaduL8LpRZajch5vo8u\r\nQKY3gDrVgWWouH4I8YE3InENtMahaM/P4u4=\r\n=6Peh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"a481c3120f937d5f7dadc617ced8c82b2a395437","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.0","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.9.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.178","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.11.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.11.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_1.5.5-a481c31_1645445509040_0.06512466833152852","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0-d4a2c99":{"name":"@team-plain/react-chat-ui","version":"2.0.0-d4a2c99","license":"MIT","_id":"@team-plain/react-chat-ui@2.0.0-d4a2c99","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"89e8f49ddcd10f2b18d8782e469bfdf3d838f0ba","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-2.0.0-d4a2c99.tgz","fileCount":85,"integrity":"sha512-5tqTVJSQbPnCdRiNRyYGZddu5/2ra2vyH7wiUz3w/Vr4JnhiHhfpbdhuuNSfGAiT0fo2mQxOeXBDBQ9EFaqf7g==","signatures":[{"sig":"MEQCIBBYj+L+XxzGYOfFhd3tnpKjeGwmqBpV3JW9j5mR+GJNAiAoRHixUw0WbniFxaGH4ufBzNBcY49lhOnq3I2cHhb1fQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGNzVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmow/Q/+MPzNFGhmbAT9O8AAmoRxViMqqqlL0FUjjIQJyK7Xq7COidiH\r\n35Rxt4FZSZWXcq2tT209ZnX0PppeewXiydIbGGYsbP5zb3+YMWgX1I5MX+SR\r\n5tnKtbyal0pJrPJOPv7VvKSLKXzxhLKbhv/AbXcsWLnx0W0GVGBEhTRDCnmQ\r\nX0oP7Aq9nao0agQZO2CaYghIJq/AHwjSslzM4gbrTBzAOL36e2ufOiMdV15P\r\nuD+Wl05Y+YZmWlXkqE/jzTVkAg9RQ95cLfQ6otzEWabNJRBmS35v6qKjpArd\r\nnVjoVz7/T3IYph10WdK8aZZTZYJkYPcB8vBnVeJ1wYrE0hwNv0xGHE6Ao5vF\r\n2pdGM1pBOu243baYoK80foEE+OQ4sFsamEL1umTazmB9stp99+MwUh35GDoT\r\nf9PnAhLGj3in55Na9yDhemXnXYal45ukE6ZgO1yjlYzxolIkndPb5sARfi0I\r\n0DGvPYNL83xazHpZqbWCnkA89Wxpc/9H3jbBTBhkCkpWRgm6hubeDCbLaAtH\r\nWn6fyrLXQql3u4xGMuP/TvSrqnr0tcFlzpic9J+J1Uhm1EqUjxpJGFYwATKK\r\nmNo3bd/0T1CbH6DoMiUo8eI2MvqUnS73WMCEmMatX6PCgONU4jDw47ZjTQW6\r\n4k/VhX6iGoUZ0lGdYaxO5vPPQwKG9nWnKB8=\r\n=2imK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"d4a2c999061f3311da80a33701676da9b7c968ac","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.0","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.9.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.178","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.11.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.11.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_2.0.0-d4a2c99_1645796565576_0.9948787756544586","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0":{"name":"@team-plain/react-chat-ui","version":"2.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@2.0.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ffd1296496da54347ea31467ca379f61dde13c54","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-2.0.0.tgz","fileCount":85,"integrity":"sha512-KKyFJe3Yd1F6pi3zkRHgRtR3IgwRHZ2zpS/iZG2dbsunHRpftkq2CGd5bcHldsnKriy8LcCnQVkRaOhKVvC0Mg==","signatures":[{"sig":"MEQCIHbTuP62ofe907E1sy30PtH+FgQldDvEZBiP7/3faprkAiAOE9oQoJjkRUuJ/PEG+N6C/QJrb/qrnKzx6xBq52JlvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGNzYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoeA//ayGWD+DkDIUsJ0J7zKxp6yZkSUC46kaAor8b7K9TKkvJuHoN\r\n0otZzwjdAOL8zp5ZxeVPgj+pwqJvhqFeAxEaFaybMvoWnRiCl3IL8y6XRFIv\r\nK+4cIksnnRXcI/8Q+SjEKtMAjZHFqhE9Ff2O9BywBbwRP/QyqGAJAB3w3Y2u\r\nr1l/4WIPpl7Q4TCQrq+Uwy39ODSwUqC4OigGdxa1+mZfvRmmvsSsS620sC+P\r\nwwSY7kaKjaGsP+ycqBQaZcR7yaskkw4/VW3dcHoXt7OOtNXuX3OVk9SV3NrH\r\nFCxTyKoHFprXjzA/2fpof7Fbjlkrma9rFDuzgFe2byGXN6EWDJ3EIVy2mfdt\r\nCbVQ1jiLY7V4ftSLTUVjT4MsxhIMR+SjcG1eK8xGmkQC+uLziM6i9/Eq1Di9\r\nKncAhhx1wilPUQXUyhrubXWU7Ves826ShQbBYySQf+P1BzXmZD+0LUNH9B4Z\r\nBBVrTheHP9404JnyqgmLNKCSWPpr9iWyLlQfiOAZdMKwdxIRKvyA3YUXypn/\r\nzpbiWSvXB2PO6BmGlSMqhZGGzP2JhFbJnbSboRw0bKXLnq44O6iZxIm3SWB8\r\nUO8fWVlvNlj98hUBNdetiNDF0LtGn6o7p922FXIi2qsh2abPrFuW2GAxghMo\r\nOuVJbx3DIIzEtZJvdmP/0LlT/J6yYPc1Owo=\r\n=5RQK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"d4a2c999061f3311da80a33701676da9b7c968ac","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.0","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.9.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.178","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.28.0","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.11.0","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.11.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_2.0.0_1645796567954_0.4816291666910575","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0-69a6b79":{"name":"@team-plain/react-chat-ui","version":"2.0.0-69a6b79","license":"MIT","_id":"@team-plain/react-chat-ui@2.0.0-69a6b79","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"039d4658f07b2ac205de6127b311e9a43406b4d5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-2.0.0-69a6b79.tgz","fileCount":85,"integrity":"sha512-unA9TTe4UICwXbVPeyklfn/vwC+7KcMJ1TApTXJnjbzvHLQGW9n0a2fEqPHXIYW5RsA7d/QQTnbi1XRadm5AkA==","signatures":[{"sig":"MEYCIQDA7LL/Z7giz7c4LXNoYtGLvm3KcEgyF8owi4S06HqQygIhAOYMcuRUq+/WWOuJkJukSb4ZS9umdCEzjQKz33gqq7Mq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHN/+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoB2w//YSKwuvqJJjEaH7FSLRi1owtyUoxyVyfiJijFQ4JaYEBH8tSu\r\nvj6z/a2E5+cTk41AujqUtY28v9kdSGqe9Sal6dOXYPHS0E73uYklI2k6YR1L\r\n9fbPqv8ZoVeX/KEaGvTFgroiN1BRrgb6UQEakKLf1tGkT0d04Gj8coY35Kd3\r\n5V4Hf8leP/aUPaPbIo5tPPkG8JFwJOLwyZmjszagYXERe/rcQtPXBWfp60xn\r\nsJBn0R8ulFdhb2c//y65sfmgTjaE/2jqJDpafuOYkvaVrXDwb1GastzhbXfY\r\nKmDd60mJov/Nl8jgJQfjcUXyvasx/vM8+yP1Dj4Fy/WJPn+xoM4rtX5Cm0qC\r\nxp41z6CEXCxOGDGGY7ASMRIiLlCzTCWGg07mvrX+W5Clyd96cqGhpvJL0dJ2\r\nnnx3E7KCaYrAAMaHoqyOiWQAlxXLeEBnPVkRpionZqz2qYrhMeBVRtwffCx6\r\nir2tFMtdf8Tp6e9JwviRICKQm4SV89AztWuk01X0/EQCM8GEb53sAysSf3w0\r\n5jsQQByqkrfnre78yNBKtK8wKpv5rqJ3lg4OcdMHyWJxGf0yymTWHX1ks8R6\r\nzfKS1MfGAz9WVvXWZfTLigheQ7oJNvWrCrkFxipsG4CngGlEI7Jf2ShYRCAl\r\nmz5eZRPUUcHe3CeENKNrC8/TY14zaxaXsro=\r\n=6ka3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"69a6b7914357d39c9ce4c8f4f55c0ade9fee8288","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.1","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.2","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.179","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_2.0.0-69a6b79_1646059518567_0.8839044728952243","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0-5960c89":{"name":"@team-plain/react-chat-ui","version":"2.0.0-5960c89","license":"MIT","_id":"@team-plain/react-chat-ui@2.0.0-5960c89","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0f6fe2fa3ed7ed9250de242d121bae94dad09233","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-2.0.0-5960c89.tgz","fileCount":93,"integrity":"sha512-o7bnfg5N9pE83SgQCS52dC3vpsS7KnGjE/QbiJB3BofAY7gZl2+j1sWgNg74plYh1o4NlJJnOhLZ/CaNZPwRAA==","signatures":[{"sig":"MEQCIHhbatMmMac0VP5ZEnz3/qu9JnX5lU1i4ZR6RHnouF8OAiBDa2braa32ztIwNhQGJnKdmslp2Wemn1UQVLbv7VvBzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJy/yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtbA//a3GWq19oL17UR8uJXSn3F2hV4mNRi2y6eZo3G1Wt6kjwi5GU\r\nsrrVw8EKa/ERaA4lf/PNeyOf3pl3Se98HO3LkNgifDbH0YyHEH5z1KVpBilK\r\nRXMepN0YfDt57i5+YWDyZwaAaX7mGvEh26Owo8fg0zk5zc3qt/UVVhcUYNLs\r\n0/b2KL5yuz11jelaFnYfL6MDa/PT+bO93bOx4luVWt2mEw/GMkDzBdX2m4Pk\r\nnEgaC8ZlSBlGaG47bPL3WcEjtmETWl+lCeRyG38jSCpg4kjLBNitP/ke/OnX\r\nLgKWoaV2Rtu/hGpdMNgMiWPAmxfU+3WEGL30Wdjmjn8vkVkoIaJEJxGnisCJ\r\n7WN/aO3453L+5v5xJqOuEfx6ZOyqaW7QIYWm9XbeYefBiSix9GVjOwLMo2aA\r\nGbQ30D8c6kz4HCr9kfIcoph53x1t5C8u6x/3IdXMZZG77DdatJkbCYzMKNmx\r\nlYkz1npaWYwJcAX/kM9YRTbAprbvK5Blxbit2E8iD9bzbkF381Y2Ro29ssS1\r\nbVanuD3n6iQFc3L0YYZTRSsK6RzSAdssAZURl9rTQwwdFjtU3+3Xc9Zgw74j\r\nJj8LsrbYE7O6JPKFG2Va4HH+Q1vi8MEIe30e4XvimmUbGldNFtyVaVpaktjd\r\nrGtJR2rCovBh8c39jtstC11vhFN6aUBx5GM=\r\n=inH2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"5960c892b9c175129384a1c2024ee59e1b7508bd","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.1","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.2","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.179","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_2.0.0-5960c89_1646735346094_0.24049159169735268","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0-bd8e625":{"name":"@team-plain/react-chat-ui","version":"2.0.0-bd8e625","license":"MIT","_id":"@team-plain/react-chat-ui@2.0.0-bd8e625","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"4e1783833dae460e83dd3bd102f0e80c5fa387d9","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-2.0.0-bd8e625.tgz","fileCount":99,"integrity":"sha512-uGKd4N+89Nn4AZ/dZ0hAMmUHV3AUU7aLeJTvEQX2vZS/fnpr1lx/4lsiFFMbLhucFCrVb/GELytrE+/EXu7Bgg==","signatures":[{"sig":"MEYCIQDeVAxNT4CSSrIkxTfpumFokcU9JAyRxD55PMgmpR2uPgIhAMA+Sz/4iHsb70sQaCK48Ge8Mb0LtGDgftoWFSYVzoYQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":225835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKihAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuWA/5ABOF+uq1utN9/BOfGvI8pMUBVizxy4rfFghwpwTQ1XiH8gmX\r\n2ziqgbd4o63MHlC2N+LFTxw5wZOnK0U+1ByvAmMms9ubZWoXStCQohAuF3gh\r\nXFb9o3Lh3nNlb591blZS6q256n8414jufyqAQQdHWSVySjiXMc2WLNr1ifEK\r\n6ywLjNFnVewt2GFH8RbZOdpqadkPiCCxKXM/oJbEwzXK0csXYkYgIPWw+CWJ\r\nV/WizKZ24jGCwFUrgTR+zIi2HIqSu5cVrgcNUXYcMN4QxYzN+QoQvRgJu8fC\r\npStqC6HMYS+VfihElV7uQ6NgLfhN5y3D4tfQYRdEk6KjMPgoXxcRxkrUKPam\r\ngeDlDAVvQsU/hNI0u0Bh8MaYch58utQ0fkxxQHgMcoA4e16EFhMKpNUE3Kn8\r\neCPBo4KrpwMn0rUPYfG9O/z7eD6uhYG/Ks2PL8L1yVLwqIzcKAfMxK6FElB3\r\nXjWbld+b89DC3QR6Mxa6zpQEZiVrbZDTfSqt2w0Bdfpmg+rMyKtbJVHUoxVb\r\nUBKLBVZ0yHEnNhc9J306ks0CME7++aDDCEmIE1idCo27kfWn4mHDz5QyPIzP\r\nMt2edk/1marhFBQvyv3DMMWfco2xf0sL7Te6jJ9MhbM7Cnz/lWbv1D26Dn7i\r\nGzkwQgWZ2kFg95PS+SnM2OywhMhQ4Z8J6cM=\r\n=KO0y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"bd8e6253a9950f9f0832fa2daf0f67d8e6a865f7","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"immer":"9.0.12","luxon":"^2.3.1","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","use-immer":"0.6.0","graphql-ws":"5.6.2","graphql-tag":"2.12.6","graphql-request":"4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@types/node":"16.10.3","@types/luxon":"2.0.9","@types/react":"^17.0.39","@babel/parser":"7.17.3","@types/lodash":"4.14.179","pretty-format":"27.5.1","@types/react-dom":"^17.0.11","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-codegen/typescript-operations":"2.3.2","@graphql-codegen/typescript-graphql-request":"4.3.7"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_2.0.0-bd8e625_1646929984442_0.1336318205063527","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0":{"name":"@team-plain/react-chat-ui","version":"3.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@3.0.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"bcb82854c8893d02f3d70845de38f4c08cc89ce8","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.0.0.tgz","fileCount":112,"integrity":"sha512-iSVz0IkUKm3roT4FBo8RxqCmhhzJyc/QceYzDkzoONo3dQO3iZ1we9gDhHq91fHe4F5fPdNJTDz20qlLIp8cng==","signatures":[{"sig":"MEUCIQCVkH0WQUHiXns5QQIO71QHbmZTRvar2EjHydnHzWkZ+QIgXQiZczWmHzAIKG1fy79z4CTLDRERaGvQCTKWJ0Cs32w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOY6jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjRw//fIKZIp4f9MOnYQrBMHGwiR0760RdPRlX0gji4xpVJaaWIx9o\r\nbllaYvTYt70Kq49FixE8UndEuTfk4fbmPdt5Qok/gSEJJFNriJeAHFODVoLy\r\nXg+q4gcH1kZLj1VooVOZ4PH/LWj7CzRCKjiuO1OaSD41JIZU6nZWFICLFrtK\r\niu2UeLL8hJyXQ9hJ/16RzBqcKmIbmLh8k0bBaqAT0dvfiVYhG0V5n0Pswit8\r\n340ukAhsFXln/JmYnAg3Fk0B4ao9PwiqpO7rTRSPUUhPIVc7hxAjtCPMwXdn\r\nYlE4yrmYoiAO6GNMFColN3Ey/9xG5Re57/shMz6wcHWbkmtSt/aChCmf1MNF\r\nnK5LahbqwnHlLB8Ua2U/gX7tKlrXOr0m96wsRsDp2xKrVIPmKvbkYYGWQrjd\r\nLQqZ8m1AvRdtmDQm7L1qHkx08HsBGzeww7J4YwQBeIYx5Ka/Ivf2xrpuN0lR\r\nVE+THx5zemAKul/c/21R7K7EvkJCkeIhNdCCqeYTNOkVh4B7FLLtngV7wmrs\r\nH4fkm6dCNSFqlTYX4yV4BimZSJRD+rEGKEUZCLWoLLBkJtlUDXEWKJ/k54as\r\nsi7628zsyuDi50W4jQegr6qc6iKvt6YNAGlkkpd4s90gQ/Jqnoc/ujBoEOE3\r\n9XLJHtPNmIYOB5YvInGTIvBUNFMy0KY0CuE=\r\n=SKSw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"04cdaa8c5db80d18e9ffd52608d3d554b3ce9eca","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.0.0_1647939235012_0.6758860641472471","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-04cdaa8":{"name":"@team-plain/react-chat-ui","version":"3.0.0-04cdaa8","license":"MIT","_id":"@team-plain/react-chat-ui@3.0.0-04cdaa8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0dfc26046c43e9266cb818683dd39c4840d5168c","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.0.0-04cdaa8.tgz","fileCount":112,"integrity":"sha512-294Fwxxf9Tv3g2lYodSeOXkav9ayXvkBZe2gEZtAgJKKCEo1jA/wb0JLS8CTtZrPKXcZO/pjlwhp6hW5Q37BIw==","signatures":[{"sig":"MEUCIQCgXPe6/seY8DewewDq6bmnK1rnuCTJ1sDnnR4plg/oVAIgXSLZjXCVWjIj8YeZTASDNeCgw4uxqd6+pMDcG0zjRsk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOY6oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTkg//Q2P4vU1Oq801p6vmtAE1J39PG0wDgl6zVR0FXq3ncS0XVZ2X\r\nkrxkuUf5gAAjF1K7PNdnQ0O2dX6O0R0kHkpQWsBb+0yw69/bU8JbS1AY8DRe\r\nCX+zI3YCe1xGoD5Q43p0nFn72DtEqJMVBNUb0O6YTAIHhxHHWtII2DLKBTS6\r\nol6FeCW3Yj+3jXh6LDMF0ZzQNsTtttKYg/5IVNRWNjXoYmqbXk0d4mJ+uMYj\r\n/1wxzssJtjaf58NCvC2mSxpBZrMB2VqBDMiEfJl6QISqNeD3aDirzgmxblJe\r\nn3Xx80E8lFhEfYQ5efCGhudJzegHs2oo/mxLDhkd364zNoe69MJZ7DtPNtW6\r\nidaClEf9ONXd/2O+p7pQGCP9UC8wlMUmmZhlPTIWrhX/737pVLs0Vfy814h/\r\n1H5TeRUm2zcSP3VJ1XC0gf9cUv3r5JIkyujUe3/yWOichxgPRUBqsYqLJphg\r\n3ly4CpGSrWwDs+3OtWl33tWMJxtmgHGk7Rhr3cu/Hqr0VNC6zIlXwtXgGsmF\r\nTS/XApuS3ZHHDGg/RCUuKvXxj/vj635GZOl1ZHgLZNdLn1woqnGyeQDXOqy2\r\nu60fGWQSqq9dx8Jvz+fmBPGvz6OJJfcgV/p+oZJDvmqNY1lYBIYyo1kRrDCl\r\nvf3ZrO62MtHACkpKUgZzU/Mvo4qfrX4JgbU=\r\n=Wq0C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"04cdaa8c5db80d18e9ffd52608d3d554b3ce9eca","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.0.0-04cdaa8_1647939240684_0.14444642035187338","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.1":{"name":"@team-plain/react-chat-ui","version":"3.0.1","license":"MIT","_id":"@team-plain/react-chat-ui@3.0.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"c2251d168168467c3e5755cfede409025a8e1a73","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.0.1.tgz","fileCount":114,"integrity":"sha512-MFG/kF+/UoKaUznshVBh5skjCSo6z6Q6N30AQtpjhEhL+AMItWm6eO39cxe9NqqZH7/2/5h3Bx23wZdxI3ClXA==","signatures":[{"sig":"MEUCIQDs4X68hkIooD2489GPmcmtV3plWJ0PETYET7Yk5ZEx7wIgK1m1G7Bq74QZsrmFpSX5JYPufOxTzZYT9+F7dDaxRLQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":309239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOcZOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2zg/9FpqnEO/qlnc8pOG/D30LQZH+2/VMFfSB2+yN+ApJ10uQVtBg\r\nkB0tAsmic+6fyarVBMyWNbGDjPzk4vr7tcAxb+2TDkrPooW7FKvsJ5ehC+oL\r\n1NJ+uqqHwBFCdo+UytQ+rn+f55i5LxDwVOXepPF6hOBMiTDTuCOGF6cy5jzX\r\ncBU9pcvm/Ye7qeovuFby87WdRKj8vfIiV/Ni/8GVFhs2+55rEc+FWKzuuQeW\r\nOUVdXNcWvrzDb6zB78HFUmpPnC6DzymNWnARkXxxRCwIbJlgrcnMqyZNegPg\r\n7HBrUjEc4cpfxbBzLtb3owFt1WCi3FXWXjtd9U/LV+DuHLxtUJUgx3b0GPj6\r\nCWGBNNKEfwXEff9HvVbZoZObqS9A2GXbqbXDPp0W9X1DHukgiUn6UULL/PDO\r\njT91L42ji5nIVILFuGY2L3ZpuAkreANFIlRRpsbJIHVJa7r0TnmRWUTSaplk\r\nYnxhfir8UVGTxKGxQfx5FHqb/CnKYLGiZzt9WFitp7YDTbv4gx/G/sZryUqb\r\n3fJh2JWoIRG5YycfyUrB3YEldJBAPo8HdH4J8wyNBVKSC7NNEjpaDDEeaTxh\r\nz6+ZLNybBmLf0U2U9/P7JTwGg6ZRXAaWQr8YR8Zxtqghlv8sTqtldbLzJVWt\r\ng6sVjfeHvdY/KrFCahw4ILQ+JxViPhMC2oY=\r\n=+tYB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"55c9796901980ebd50f4e37f3f3aad8e7c3a57c7","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.0.1_1647953486052_0.2135153158112042","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.1-55c9796":{"name":"@team-plain/react-chat-ui","version":"3.0.1-55c9796","license":"MIT","_id":"@team-plain/react-chat-ui@3.0.1-55c9796","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8ccfcc3bfcf9363d4cf3680827e8e1c0f905815d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.0.1-55c9796.tgz","fileCount":114,"integrity":"sha512-aNV2E/gCR0ggHnE1TK7bUwUISHDngB2jBZH3Dz/pkW7e5J9L6sQZdcZNMp4SDPXJTwqgUDaVDY45NSiKaxjVGQ==","signatures":[{"sig":"MEQCIC6KUuXvjt4HgKdUlatAIFztZKNUCBQgERcfUvSznEfUAiAm5P5oRu0qe+frZWh+dRfHgJrL3It0zBCQlgPjW2hykA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":309247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOcZaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrgHQ/+Okl2ntGeENn8adNRbVSU3AXRdjToPFTonvzBDns6CKwL0oDE\r\nhHLlZk51GGTaOrOqjtTVxa70kcO+xod+RmwhmE8tF8UYoCGGMTmS61/rLJrI\r\n8jKmRm6KZvhc6FnWhmzf/tw723Ep9x2YL1q90N88HtBLishQCh0apfdOlzv9\r\n9pkTGPP193umUSqcOOsGeBE6/ySTo1q6ePfWYoDFT6FQd1nEzn6emZH6K/RF\r\nZ0UfB1yD9HpCQgR/P15SXtb72X+Xio6bGJ2ymGVWf4I3e1NGxXEBQnbgrbqr\r\nBBEBUumqFD9lNTk//15zHeGHW0ym4dijlxeCFt35h3wElhe8Ok6svjjbDgJO\r\nOCX0s0xL9M34roZd+Dm6zlEuDUeTii0GvwdY3rdhucteWhF5cI1Z+NHz5AMZ\r\nTwwSxNGy0NnAlA5Py9oqczSW+C27EQLxh69BGFx0O9lqIu5yxWmKbvUQ9qGa\r\n+trrYPh9sKBc/ZxW7eL9myXlBUMwYL/CdoqvVDxHWJXAEihuO6Sg/ICkwuya\r\n/p4Rzc9oKhEsKEd6efxS5MR4Frg+NFS3aIYwN66mL2ZRUQD7mR9Xdz67w3mH\r\n5QJPDCYaPX3jNRcp8GviB1ALGg9DLCR6eQeoPPgKFp1LrX0iEQIRHEL2fiiZ\r\nSaYZW2pDEPQ46khlisJh+6ld9IHeR9groN0=\r\n=zpR4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"55c9796901980ebd50f4e37f3f3aad8e7c3a57c7","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.0.1-55c9796_1647953498737_0.9872965588511553","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0":{"name":"@team-plain/react-chat-ui","version":"3.1.0","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"751262fc474fefd32b2661bba62665e46e1833f8","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0.tgz","fileCount":114,"integrity":"sha512-ItdKC2vmBKIDkr511H324Zd1eZAZfUkq2yyMKvhfTF/UIYrVhph2/q3oSLI1Zn6EIB9haiIKQ95Fdfi8icWevw==","signatures":[{"sig":"MEUCIQDNjSVRFfMUFEJX094/RHd8sU1bLWfT0J4R6RTfu34slAIgOkbM0D6RfyhGnxP6G6qrPsvoMj00Y3CFIrKm6lV+Fzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOez5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+qBAAg+MURMERA+Fl7jvxWYnIpu6l3UWDETCp9UlsCoz6wA2xzYef\r\nKnSIZwRaqvhupp0blYHfl0dilAU9duSU1KriD4xCyFNxpepgp53fNuz8v+I5\r\nbH/zR4plLeC+tBX2xyS3iQKMTaYOZFc8wtTcKi/P91iMLEopwyBo5wX28IAj\r\n1tMryIW7PoSjk5MQY90NfuX1wP9nC5KmjxXHMhiYARBieWNuGbxt4F18YTw/\r\nXIryq+1p5nl/eMlHRVh3qGH3empttJoeNqtpndNgz83pa0ylJD8iqnxRIUUM\r\nZzbBvagsap+OAYc345oJInLFSEG9ECZ/fKg6NYWJnfyOFn4hz/thSz2dgtKs\r\nhcqAi2eoDY767/Og09oVlaRHjldCqX9e9UR49GoG/xXcJxBubp4+W5UMazVC\r\nnx1D8ktENGd4HH0Cviz0P61CVwVO0qVN18GhExOZpHIKmoI9lUu4CK+C330R\r\n9nOl4NmWtXONZVn5Rxj05NNQX4JoAE62MuSdkx+2V915sQyGOepPCG2rPlJn\r\n1CHbtKdJeMOqbrb/ENIoCnDcMVVNO2CCEarbVhNGBgTlriZJv+shtofmsbKU\r\nwFgfL9D0yVBaNt4QQE3Kd3LLOS1QV+EUjVrdwj6AxDfeKLnB+j65kqZ7bL60\r\nScxT3UgYGVxFtMfC0tkLoBCkdUBv3je8hzM=\r\n=4JcG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"5f1ce726e700fa925d945a325df7ed540eb9e1a1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0_1647963385320_0.02074474482750488","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-5f1ce72":{"name":"@team-plain/react-chat-ui","version":"3.1.0-5f1ce72","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0-5f1ce72","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b9fc844ea80759549d6c2fa1732992c94bb098b1","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0-5f1ce72.tgz","fileCount":114,"integrity":"sha512-2Uu4mB181/FKPbD4kG2jNcVoMT0vjgv2StCkjYudwNEjVr1F0VI4G/Qp9OHTp0MR6KqLnzM0xkdaA+NlkmfbVw==","signatures":[{"sig":"MEQCIE2hiDEF/cpsAqecb6aNoqzBQKbSEeFyCeHU9Orqd/pMAiAiH4asKVmJIk+9mptzr0Gwmubqo2zYvrWOl6IiqVSTdg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOe0DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqhRAAkKt6+ztIfE5/DXdi8el5zrZcLV0w8wO5NJDZ8rtJr/P7Dbrq\r\n+5PaVlkNnlPq238eV4btm05uiNl6HLZqCdSvuqIKmA6trptNmni/IvnwCUqw\r\nBZrSruH7GhQpSA8H52r0CCOE5hNb9t6uA4M4TGkyV6EAKVtwWSxp60qJXKOj\r\nAAqF0fQuSUP9Ij8hB2KouVYL4aKEFkS0TfI5o+wMrGX/Jd3Qz+qQjs2teNT+\r\n5j7eSCGNaLcaaRbSHcOfVrBD0dmAe3KVFW7c62TRMyp6yiaYUXuJrVoxjBR7\r\nsqfUtcBIuIeS0Fiih60aYsKHsL1Q5/rJ61d3pFIx5gOhgC2Y3LIRPcZZH+qh\r\no+yjFz5YUcqqK3jWkxtQ73CKncPT28EoXOKWm+g5p6PA78SxJnpiUT0uQvqt\r\nTgptm7mX2n1YPpdPAKiS2LHs5RrGVJHoTFc06omQEO2/0CVLrRY6q0WzHuWo\r\nW0aSLlQC4l3KqlHElpK5+kFReEEKWu3Nh+h1Lly27A6Ojj7Hj8EUSNMxYxPm\r\nRn0byJzlIGPWYwScl9jNQMy17ITXkbtasCJxz6nEY7CmF9hS2qL3Lr4nrPbQ\r\nxq5UlK7cA53uVH0FriXnI4kMxrHa2S0k4LDwgYtJtHX3U0EkTzcg/egw1qJI\r\nThuc2TD5jGR62FjKrpxEIPJa700ovm9yYjw=\r\n=53FB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"5f1ce726e700fa925d945a325df7ed540eb9e1a1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0-5f1ce72_1647963395649_0.8979777963046685","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-94bdd90":{"name":"@team-plain/react-chat-ui","version":"3.1.0-94bdd90","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0-94bdd90","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6ced4863179f92e8f09eb88453987f1c4cad0f9b","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0-94bdd90.tgz","fileCount":116,"integrity":"sha512-i1HX/kJmzCqEZPspnVbSZF0qo8UJXoEFGQM90GRsJwfz8u2FBSNEh3sy1iqlZqNqu7ks1Qk/4ffSXWnCUYTl1A==","signatures":[{"sig":"MEUCIQDvUr/SEvAmBdYflmrgF3TIOJFoVMiIZqIokVnvmh08vgIgGvaSohcW8j9vI1jONN8wbFCBwtDGgPJNJTFWsq5Mzeg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPE/AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpPeRAAjVZp4+q8B1QkWikh+i9AKoPJMOAgzI4SY83/R9l0T+QzfM86\r\nznxvIIyQsNFhpDGD01s8/SyT8GPXromikpSVC7L6EABYmBAOcHv0HUnmOTDi\r\ne1lE9HABsmw1W2wcTGgiAtGDB3GrYf/4kzeT234sG8q4PHqcou/Oj71SbZiE\r\nHBopBKjE9Va5fTMtMQaH9zCC/RuvMHDF0OroJNzIFdsTZ/MByzSp2UJoJ28u\r\nGl/Fkt19K6xkxjBVlkiuFTK8UF01xXVsrlHKhU6yKMe+izwKpEdG3yt1REFk\r\nfN7OTCudMZe5nfC0UHqZStAuzy1+z4xuur6ZZzFrNG+xxjfJMW84Nm9fjnMl\r\nZZyGA8e1kP4YeK+/AXE5h/XEo8Xw7g0UgRAPZJJ+WzXVxGl9B82OXGeypoJS\r\n8C7lWL13PQHSE2QYE/cROOmkEMpJHeol8qoJIZn0NnSUvq7y/JxP60kGeRX6\r\nMsR3K5vtdo66JCMymw5LHPa5C5vZS0+CmTGDkpMNXc2Krv1ReCn/OEe8Y4bG\r\nDoxZfXK+Cwm+uJdtZQpscoqYHF5tSyjyqJ0eWLOFGiMtInoaEV43Q+PBtspZ\r\nwGyX+2NmYGzSBYKsHfDqpKkpqW634gQyqkh61YF/xd7LN+nNcjYp37Kzv8xa\r\nlqrdDTXqDqNYq80nvxEZVT0JrYklE8m9vuY=\r\n=mmDH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"94bdd90b867cc8a6c00fbe8b4da1fe802b0d7a2f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0-94bdd90_1648119744193_0.36445303548351493","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-f226022":{"name":"@team-plain/react-chat-ui","version":"3.1.0-f226022","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0-f226022","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2a51d2c14ec314a78a62653243a9735f20c48226","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0-f226022.tgz","fileCount":116,"integrity":"sha512-lWsUdILuEZNIEFnuTc/iqLxf6BaH5ZzE1vAml1ByimtZnKmY73lI4ZOFE4Mz310IYhAelaF5R17OgSzXwYHfPg==","signatures":[{"sig":"MEQCIEtOa5gcRt29uzPz+j42vUiTNUPO2mJ6kHHtsnwkkOA6AiBwQl2Bv7o3+1x8paLuy3b95sVlgHANWLkF344LZrxu5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPFTFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoILg//cgf/GEPTn0zR6Ms1js5GSpKiZETXiujmV0qQXHx2nfJMcvf1\r\nOs26qMHFudlVVU7RdE10kBFAxIWpFdtKsa2X1D8AELy9l1hr9FIfDGREEaWz\r\nP7ElHkCC6N2AFpJbKhzxmWzZ7gcCnU/+fnSXMMKylu+x+BUDCmM4Yt2RfTW7\r\ni6iWkcUcnQzJyWGqb12yYxSsrDBysohOCI38nx2roicBpH1irj/N1PBEOkRF\r\nNWyt1LurNd4Bwaqhx54DjOW1/a3oVWXyNbb7ROtkE+FPQi0vvAmNG5k2zjGC\r\nfgEhObzOULY5fLdoTwTpkAFw5x8cQi0SJA9xSRO7JQUOmmn8tzKn22BUwgcs\r\n5NF1p6mL76i2Muoe3+s/xagfisdxZExDH2c7NIa6aneumptcYbOIyMuTl2ca\r\nObzV2OZSS1mJ2gnOLKIGiCY5z5hDBlc4E0vzS4nQBhUWtDTKtU/M6idA8mJ4\r\nmeN2cnXHkuqy/72KWeO7KeI8mev3ybbPX1q6VMlQzqmuSh2OgEHBe/68slqz\r\nCxPfFjltD3OSBiTeaPshuQ28uwnHYdEnHeQwjlqa9ZutgxmI5ewyCNSczV7l\r\nUVX00DwZkKo8bCikTbzyE//XnuQZj6eta5MSCQciflWvQbngS/SXk0+amWRR\r\nh23u4RrmmCGqP3JFZIDQtXAy6+fJU//GgmA=\r\n=ZUZb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"f226022c7a1a3f8bb8f4fa7a9a003f809e8c5130","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0-f226022_1648121029698_0.7982066315029446","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-3efb92d":{"name":"@team-plain/react-chat-ui","version":"3.1.0-3efb92d","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0-3efb92d","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b3bef192e70c2b0739e59f890c7ae217d4463e2e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0-3efb92d.tgz","fileCount":116,"integrity":"sha512-kZgGciHYf88YAWEc5nU2Jh/d5l9mSMLpWQDUFUPB7KBe6GDR2yErNnbpQiKP6l1dFWUpYBSZK2kXy7HPz1LvUA==","signatures":[{"sig":"MEUCIQDn7A4BWPn2otJ+B8xmfVFJMV2gIiCdEKWBOMg6WKiiXAIgRopgtmbSduhwT8a7uU4/7tRkTQj8o++eWIcPmZIa7ww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPIw8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoyPw/+M1DWo6Yk3npo+YHzVppYPrClwV2WbD74g9yDJFuZasIWbN8h\r\n1fZzW515RCBG3iOV2uXssNrywyZvmhZplhEMY+YqBENwMlXA50FfSBoEASUo\r\nNW1dwxfOzH8gKdRPiczrby0GE7/xph248Bfzp37WZpNLIM04mBdmSY8BPRh8\r\nEhRmwHpxO3Zfy5cKfM9Q6lnCmqbUgxZh4F7+TPjSYibCiy23E3p2gp06+WsY\r\n6pxyjGvSi1ncUQcaZc+q4iiGW8NoHF0Y/+g5+5KtXCDxQknWdD8VuJoVxYnw\r\ngvkcYzNyhtWFf6qDOLEWyC/CS5uspT5qcQJfbZbZx94RXMRsRQbegn/11vlB\r\ntMB0QH3nmiXrktRFjBQ+737Pi4lVqy25SLj1oSiHRdPCnR29C/+0iyLJc4Sp\r\nZF+9jbkuDXeg0Szju6qakXbbtnV20STF3wNjoIsZsyn5fwmjIx5B5kMvqp6a\r\nOIJscL3EOkkRU3QC8WxZ02YmgXjYx11pmFlLgFc4ri7Hkrgr8D6TnC/80cBE\r\n9zRSRQjhHV4Asx4olbpqofOF6XDbvqgU7qUvIPZ30NqspqJDghAdN6ZIEYPw\r\nmdgIxLuDAdfrjpLJmEwgl+ywOgZNSOYDqlqMcToPn1DqN1BkFNdTmwwxsBf6\r\nYARid35RaraXOibLGJAfa0NKxnUdHzZ7sY8=\r\n=w2lV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis is our React chat UI library for embedding chat within your own products and offer your customers support. To use this you must be part of our alpha group of customers.\n\nThis package is still under development and implementation details might change on short notice. If you have any questions or want to learn more about what we are building at Plain head over to [plain.com](https://www.plain.com/) ✌️","gitHead":"3efb92d0a0ac7d0268cc286fa806b2ed67eeb0cd","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0-3efb92d_1648135227949_0.13964541050762103","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-f938887":{"name":"@team-plain/react-chat-ui","version":"3.1.0-f938887","license":"MIT","_id":"@team-plain/react-chat-ui@3.1.0-f938887","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"75eed29f6049c249bf86ce20ad39339254135138","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-3.1.0-f938887.tgz","fileCount":116,"integrity":"sha512-OTqGoJdF3xSDKNgnaLBPrRUvo+tbhTjcbmk0bBxR2sPByEHIGJS2eWqW4BbXDtTPQ5P+PJKInTbMcOOtNUmk4g==","signatures":[{"sig":"MEQCIFfXMNzduEMn90PhOi43Yg0GsAu8rZdqs7etiqRdW2TgAiAFYowHAWZ5II/Oi522l+vcI8AuG6PMQ/UnbqCvbzadyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":316838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPK++ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0URAAkBeeSsBStrw24dfDcwpKZWW+BardkLJJUPTftFDjVxh2Bads\r\nP/DR9ets/ZPbrG1sTnBKXu9tTfrWOlzcZP+Q+tnrqTSRRnzBMRgojXdcwAsn\r\nwrnKszIG0on1Z+Myt2apVTP8g6s7/JXz+GvJoksSqAnRm/SV9pMTnUMbAGb/\r\nRQXCgMY1MF3xKayrMwkzn6EoPnJcxWW7vNoBucfmrbmxnQ/mqbb4x2rmSiLJ\r\nBuV+GffTm+m7l9biyfg8CbDNig/dFr1fyiZOMeU3VoWVqEM6U2VgRoKEv5fX\r\nsuaWBndygXXLrDKKmHehwhaTY2W2cFJXYWRV1pV4GzP9C4LSY9GqNYCuKCUW\r\nmH4ucor5u3EEHr6seVOxKgm1v6suoRmZ4lD0swY6diyccXuPvCla7cC9YpsV\r\n+SE1x20frS+ptv8vBmLFbavMp082WYAoMDscC/bUlqJw8HcuHNkaxzMdhibm\r\n3Wm6nTgzDNXBoaKwRbwGPRYV+tPUqR9duLtSnj0q3GDJosjjMoX1Bs9EZxoP\r\nM1ZYzpzz786CrJy0tk4mDR+KmkqsMnRoAgEya4BI+HYHLMkCck48MrX1IQ13\r\npT6vNE7IL34s7rRQCj/8nV+Eoln0dLHthXHHBumazJKKZNNyYM5bjW6JEjEK\r\nIt0e4sVyW7ppXGHlDrSbqCJc79tb2gtw+KI=\r\n=x44I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nWe're still in beta. If you would like access head over to [plain.com](https://www.plain.com/) ✌️\n\nThis is a quick guide on how to integrate chat into your website using our React Chat UI package\n\n**This guide is a work in progress** - if you hit any snags please let us know so we can help!\n\nThis guide assumes you are on a Mac. If you use Linux or Windows please let us know and we can help work out equivalent commands/instructions.\n\n---\n\n## **Step 1: Create a private/public key pair**\n\nFor greater security Plain uses an RSA key pair to verify that all customer details you provide are genuine. The private key should never be shared with us. \n\nTo make it easy to generate a private + public key you can run this script (to audit the source code, check out [this repository](https://github.com/team-plain/generate-rsa-key-script)):\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nOnce you’ve followed all the instructions this will have generate a private public key pair compatible with Plain.\n\n## **Step 2: Create a Workspace App**\n\nThe way you organise API keys in Plain is through workspace apps. Each workspace can have as many apps as you’d like for anything that will programmatically interact with Plain. \n\nFor example, you might create a Workspace App to use the the Plain chat widget on your website and then make another workspace app for your iOS app. \n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/) .\n\nThen select your workspace and then navigate to  “Apps” from the top left menu.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nYou should see a button to create a ‘new app’. You’ll be prompted to give it a name so you can recognise it later.\n\n \nOnce you’ve created your Workspace App, press [+ Add public key] and paste the entire contents of `plain.key.pem.pub` we generated above (including the `---BEGINS..` \n\nOnce you are done it should look something like this: \n\n<img src=\"images/readme-screenshot-workspace-app.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nYou are now ready to set up the React Chat UI 🎉\n\n## Step3: Set up the Plain React Chat UI:\n\nFirst, install the react-chat-ui package using the command: \n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and hooks\n- `Chat` which renders the various states of the chat, e.g. the logged out customer flow and the customer timeline.\n\nThe first thing to do is to import `PlainProvider` and the `Chat` components and add them to your app.\n\nWe recommend wrapping your top level app component. A basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  // More on this below!\n}\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => getCustomerJwt()\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes two props: `appKey` and `customer`.\n\n### appKey\n\nType: string\n\nThe app key is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the appKey go to the workspace app you created in **Step 2** and copy it. It should look something like: `appKey_uk_01FTGG89Q8N0HEN3572CRN0F2T`\n\n### customer\n\nType: Union of two types LoggedInCustomer and LoggedOutCustomer\n\n```jsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n\ntype LoggedOutCustomer = { type: 'logged-out' };\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website. This is used to create or update customers within Plain.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details which are signed with the private key we created in **Step 1**.\n\nHow you sign a JWT in your back-end depends on your stack. \n\nHere’s an example with a Node backend:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely!\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName`  (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified`  (boolean):Whether you can confirm the user has access to their email address, for example they have already verified their email on your app or website. If this is false, then the customer will have to verify their email with Plain before they can chat. This verification is handled in the react chat UI package.\n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour front-end will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your back-end and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API the example then becomes:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  /**\n   * EXAMPLE CODE:\n   */\n  return fetch('/your-api/customer')\n            .then(res => res.json())\n            .then(res => res.plain_customer_jwt);\n}\n\nfunction App () {\n  return (\n    <PlainProvider \n\t\tappKey=\"YOUR_APP_KEY\" \n\t\tcustomer={{ type: 'logged-in', getCustomerJwt }}\n\t>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer responses pop up in [app.plain.com](https://app.plain.com)  🎉🎉🎉🎉🎉🎉🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.","gitHead":"f938887439d7b90f90cfda2d3a377c5956e336c2","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_3.1.0-f938887_1648144318579_0.11167358847043274","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0-82bc487":{"name":"@team-plain/react-chat-ui","version":"4.0.0-82bc487","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.0-82bc487","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"4786e3507f0e014b020ac3dc918625dcddca8c3e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.0-82bc487.tgz","fileCount":116,"integrity":"sha512-orh+57dwh/Ol5ReX4UcmOt6tDQCGeK/7cXmOQvMn4hoivAFIQRaKnrZFb5fOW4QfEIHOjyznnbM7s6GAUK8glg==","signatures":[{"sig":"MEQCIB2RpHewsVNViuJFgRnIxD9GM5104bXFxEQ+9kZDntnrAiBeI139dw4Nzzz7qKCFU/e8eY6fnczNZ3zrLOn/4yyimA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":317555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPLDMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKXw//aH28eAkjdTpggUErvxHC9GMIxMk3Ges6MCS/+3PUVVnfhrpq\r\ncZL6ewnK2Cx1XweeO6YuSH8L38rTmEHeizFMiA5M2SJOTXxsxOjjrpRxI2A1\r\nn8Y/eL/fG4V2WWWSFXPeC6fEGB6ediV4qyqIS50Cqx6IfHYGB0Ltn5xDFW12\r\nVj/aH4Rw9a109QMJ50DDywnPv7o5so9UQk0bEcBHwe0aw5F+PbyUT+lKvfNu\r\nIX5i+8oOi72M7Lg+qcmiawC0Tb1ltVP8v8kO03TjSObL1sj19j9zMw4OSdFq\r\n5gLFgyFShMW1JRGpmcyfD2QawtfU0lnof7RW3I+0E5AMp5PCgbZu/lsTSzQF\r\n+PcaPh3o3gEK/NoiXk4+t4zeutd0940pslf6tEPL8KiBu3Z7iozHWAKXg8gU\r\npjGTm+LDrbuKXq+3Y4SSfgVWeelHsyRZ2efTB2U7jK0TA009BHQl/q3iRhXc\r\nDZsLPXLOWyrddU9PMecoIHkMbxzrfVKWs4aKmsVszmAPwGhcp9pBpDSAvZ2c\r\n0rO90oBecUVWnjWuvPHuLrNMuL19ERG9u4spZAwrtQ9g+C3I2scvqvOHrz4f\r\n3OcZHyskxOYAXk5wt0ew+guULb8hmEXDAOSIYTmanWcYmU1rhl5Zp8aMIZWH\r\njNTTVqGPIM1YLFljsYmct6XfxWBoFWMeNTw=\r\n=A7SZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nWe're still in beta. If you would like access head over to [plain.com](https://www.plain.com/) ✌️\n\nThis is a quick guide on how to integrate chat into your website using our React Chat UI package\n\n**This guide is a work in progress** - if you hit any snags please let us know so we can help!\n\nThis guide assumes you are on a Mac. If you use Linux or Windows please let us know and we can help work out equivalent commands/instructions.\n\n---\n\n## **Step 1: Create a private/public key pair**\n\nFor greater security Plain uses an RSA key pair to verify that all customer details you provide are genuine. The private key should never be shared with us. \n\nTo make it easy to generate a private + public key you can run this script (to audit the source code, check out [this repository](https://github.com/team-plain/generate-rsa-key-script)):\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nOnce you’ve followed all the instructions this will have generate a private public key pair compatible with Plain.\n\n## **Step 2: Create a Workspace App**\n\nThe way you organise API keys in Plain is through workspace apps. Each workspace can have as many apps as you’d like for anything that will programmatically interact with Plain. \n\nFor example, you might create a Workspace App to use the the Plain chat widget on your website and then make another workspace app for your iOS app. \n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/) .\n\nThen select your workspace and then navigate to  “Apps” from the top left menu.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nYou should see a button to create a ‘new app’. You’ll be prompted to give it a name so you can recognise it later.\n\n \nOnce you’ve created your Workspace App, press [+ Add public key] and paste the entire contents of `plain.key.pem.pub` we generated above (including the `---BEGINS..` \n\nOnce you are done it should look something like this: \n\n<img src=\"images/readme-screenshot-workspace-app.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nYou are now ready to set up the React Chat UI 🎉\n\n## Step3: Set up the Plain React Chat UI:\n\nFirst, install the react-chat-ui package using the command: \n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and hooks\n- `Chat` which renders the various states of the chat, e.g. the logged out customer flow and the customer timeline.\n\nThe first thing to do is to import `PlainProvider` and the `Chat` components and add them to your app.\n\nWe recommend wrapping your top level app component. A basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  // More on this below!\n}\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => getCustomerJwt()\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes two props: `appKey` and `customer`.\n\n### appKey\n\nType: string\n\nThe app key is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the appKey go to the workspace app you created in **Step 2** and copy it. It should look something like: `appKey_uk_01FTGG89Q8N0HEN3572CRN0F2T`\n\n### customer\n\nType: Union of two types LoggedInCustomer and LoggedOutCustomer\n\n```jsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n\ntype LoggedOutCustomer = { type: 'logged-out' };\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website. This is used to create or update customers within Plain.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details which are signed with the private key we created in **Step 1**.\n\nHow you sign a JWT in your back-end depends on your stack. \n\nHere’s an example with a Node backend:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely!\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName`  (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified`  (boolean):Whether you can confirm the user has access to their email address, for example they have already verified their email on your app or website. If this is false, then the customer will have to verify their email with Plain before they can chat. This verification is handled in the react chat UI package.\n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour front-end will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your back-end and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API the example then becomes:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  /**\n   * EXAMPLE CODE:\n   */\n  return fetch('/your-api/customer')\n            .then(res => res.json())\n            .then(res => res.plain_customer_jwt);\n}\n\nfunction App () {\n  return (\n    <PlainProvider \n\t\tappKey=\"YOUR_APP_KEY\" \n\t\tcustomer={{ type: 'logged-in', getCustomerJwt }}\n\t>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer responses pop up in [app.plain.com](https://app.plain.com)  🎉🎉🎉🎉🎉🎉🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.","gitHead":"82bc4877c3ef824b055838e9aea846454fa23b2f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.0-82bc487_1648144588746_0.30665476112488776","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0":{"name":"@team-plain/react-chat-ui","version":"4.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ff3267e8669bfeccc2e16341ddb0bd55b64d09f5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.0.tgz","fileCount":116,"integrity":"sha512-U0fsou5ckxZQ8fCQ3Fi5ZuxTvzc0H07riiDXFCq3+7ZyUCLGMgP/t2XrwYsPUiE9xwNHdWdLC4M7P1DyL8dMGw==","signatures":[{"sig":"MEUCIDEWp2D3bZTwOytwjwEGxEk8jAm1uEIP38ajXpvSHatkAiEAouwgM3xUl6/Mle3Rrsi9XU/Wp/kIv8MqsbtWT7klR8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":317547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPLDPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjlQ/9GkawHE90hzFtwWk55OeAILA29vvI+sjF8ES2mMs4vSEQeStJ\r\nfSgBQlZ5CazhEAgW/vRoMqSCWRyBq7cjThU6Hl31AEGE5MXypyMPEmnYnRNp\r\nSRDpvxeuktp8vt0mvvqjkGm/GNDyzNXndRwqweFwnGN4bNWx6fEtjZedDUQH\r\nEh9XQDbKlDH1OHNYHtvAMRIINon/pwxsH5eF87jxjg5Jwdd01bYGt4h5pw/j\r\n6k6oj+rGCw5WlSooTyZhZFUUWJG8v0OiUOiFHvrF23DtXwfyt9ci3JK4MUxd\r\n5aZOZvcGahVBO8keggyB6Sa8OXP/gHmsvn31k7MIw8QRPtLLN3LU5ELR3ds1\r\nQ3FYCOzQDQnwlFz58khgC8/e7f0Eu30ZE4FO6diT5KMJiLc01uPDa7vkaYlR\r\nh/mZpDt0bdWzUKRZxhpTjkjYv+HWU8HwPg29oHtgPAJ0l+E8rS6d6mog82hX\r\nv0qf0kMu/bGnhdiCTUuJapiV1VXnxFU6ce40PwadHZAcyqde85gIHPxu1gzn\r\nBorLt06XJNpiBusXTyVzax53z3yuhYntXLMvFGHwA95T8lLucL4avQ1L6BpE\r\nQ8IePdcZ462rM1+Qg4dYyDi/66gJqim8kZgrugfbwMAKJtECnuNFqIly/+uN\r\nhSpE3tO+jf67Frds2khckfYAmQhNx6gx6gc=\r\n=UQ1E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"82bc4877c3ef824b055838e9aea846454fa23b2f","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.12.0","axios":"0.26.0","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.2","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.0.9","@types/react":"^17.0.39","@types/lodash":"4.14.179","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.11","@types/react-redux":"7.1.22"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.10.0","ts-jest":"27.1.3","prettier":"2.5.1","jest-diff":"27.5.1","tsc-watch":"4.6.0","genversion":"3.0.2","typescript":"4.5.5","@types/jest":"27.4.0","@babel/parser":"7.17.3","pretty-format":"27.5.1","eslint-plugin-react":"7.29.2","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.0","eslint-config-prettier":"8.4.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.5","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.5","@graphql-codegen/typescript-operations":"2.3.2"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.0_1648144591252_0.5010364831743594","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0-661c70d":{"name":"@team-plain/react-chat-ui","version":"4.0.0-661c70d","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.0-661c70d","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"dfaa0100fd48efa66d99c14357fdf5e63dfd45f4","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.0-661c70d.tgz","fileCount":116,"integrity":"sha512-tPzXX/Ui/UOunc0FPQroMq/4a1sGSpkUWPvVXCs00Gj8hoPHCuB+P4MX9pjYNZU/6WG8gWZ42qxQQdUaiShMCA==","signatures":[{"sig":"MEQCIGVY8jizlnvG3eXvpOwwTtu7/UfulWUS2dEsRLshMzs0AiAXgXSVQs5VEjulAg+mX6a6ft2jFB23GvvVjZyQea3ZEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQZd2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmod4BAAlbpyyNfEK7PyCy9Gpy49/JPwei8go7dKiP7wRAnGy2VWELJF\r\nD+uQZjyKHHkMq+4ekRPRGIIyJzjhwONdFH5ltWfmK9INHI1TwHoZOIxR1GA4\r\nQX7qmYi9FjcG6eHnIouCz+7Zgm9ZhZmsmYotwFAW+8E9tFsfLUZ1APfkAMIM\r\nsnof1nf+M3e+7L2jAW1B8tWd8ZRp+xGIvUHkdEzCCcclpw5oki1CFkcRX2Xp\r\n0tHqmsl/SbkT6XtUN6Kgmof846kSf6hriKOPjuvjmEUVLCp5mcG99SqPFXBB\r\nPoYcDAorChmqvlDvswosu3xtAg24aDqUDl2WMvBurpEDjNbdAl7/laLenzxt\r\noJS3/cs/zctU8r888cCMRM6FD+PW+GpRLKtoQN1hVyFx0z/Nbb934MeIgrUY\r\nmAQ88qxQLpDPpp4Wg6ix+2j2fZLI9BacrXnQtRuz8z4Z7NDNuuKhfSe8dMbS\r\nHKNPFuUCqcezKVaUZ3WrHFVcAlaP4faDsk5BhM77EAkQ9BaskXtvUvIznFsi\r\ntfSZ486NglF4RJkrbCUhvv3scGfOHBY6DCGnqydJSPPHACZ60q4pC8fZMvdF\r\nFfCqUkgMUd6QzQpG14qHlYR86GaRnG2XI4dsiQAyiwb+ukxxTPVrjCDzVNeq\r\nDUx2hv0+yoTljDKya7t4Wv6Is5gyo7Rs3a0=\r\n=50a2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nWe're still in beta. If you would like access head over to [plain.com](https://www.plain.com/) ✌️\n\nThis is a quick guide on how to integrate chat into your website using our React Chat UI package\n\n**This guide is a work in progress** - if you hit any snags please let us know so we can help!\n\nThis guide assumes you are on a Mac. If you use Linux or Windows please let us know and we can help work out equivalent commands/instructions.\n\n---\n\n## **Step 1: Create a private/public key pair**\n\nFor greater security Plain uses an RSA key pair to verify that all customer details you provide are genuine. The private key should never be shared with us. \n\nTo make it easy to generate a private + public key you can run this script (to audit the source code, check out [this repository](https://github.com/team-plain/generate-rsa-key-script)):\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nOnce you’ve followed all the instructions this will have generate a private public key pair compatible with Plain.\n\n## **Step 2: Create a Workspace App**\n\nThe way you organise API keys in Plain is through workspace apps. Each workspace can have as many apps as you’d like for anything that will programmatically interact with Plain. \n\nFor example, you might create a Workspace App to use the the Plain chat widget on your website and then make another workspace app for your iOS app. \n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/) .\n\nThen select your workspace and then navigate to  “Apps” from the top left menu.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nYou should see a button to create a ‘new app’. You’ll be prompted to give it a name so you can recognise it later.\n\n \nOnce you’ve created your Workspace App, press [+ Add public key] and paste the entire contents of `plain.key.pem.pub` we generated above (including the `---BEGINS..` \n\nOnce you are done it should look something like this: \n\n<img src=\"images/readme-screenshot-workspace-app.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nYou are now ready to set up the React Chat UI 🎉\n\n## Step3: Set up the Plain React Chat UI:\n\nFirst, install the react-chat-ui package using the command: \n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and hooks\n- `Chat` which renders the various states of the chat, e.g. the logged out customer flow and the customer timeline.\n\nThe first thing to do is to import `PlainProvider` and the `Chat` components and add them to your app.\n\nWe recommend wrapping your top level app component. A basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  // More on this below!\n}\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => getCustomerJwt()\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes two props: `appKey` and `customer`.\n\n### appKey\n\nType: string\n\nThe app key is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the appKey go to the workspace app you created in **Step 2** and copy it. It should look something like: `appKey_uk_01FTGG89Q8N0HEN3572CRN0F2T`\n\n### customer\n\nType: Union of two types LoggedInCustomer and LoggedOutCustomer\n\n```jsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n\ntype LoggedOutCustomer = { type: 'logged-out' };\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website. This is used to create or update customers within Plain.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details which are signed with the private key we created in **Step 1**.\n\nHow you sign a JWT in your back-end depends on your stack. \n\nHere’s an example with a Node backend:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely!\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName`  (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified`  (boolean):Whether you can confirm the user has access to their email address, for example they have already verified their email on your app or website. If this is false, then the customer will have to verify their email with Plain before they can chat. This verification is handled in the react chat UI package.\n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour front-end will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your back-end and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API the example then becomes:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  /**\n   * EXAMPLE CODE:\n   */\n  return fetch('/your-api/customer')\n            .then(res => res.json())\n            .then(res => res.plain_customer_jwt);\n}\n\nfunction App () {\n  return (\n    <PlainProvider \n\t\tappKey=\"YOUR_APP_KEY\" \n\t\tcustomer={{ type: 'logged-in', getCustomerJwt }}\n\t>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer responses pop up in [app.plain.com](https://app.plain.com)  🎉🎉🎉🎉🎉🎉🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.","gitHead":"661c70d616967b029d10385e6a8e39d060ecbac7","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.0-661c70d_1648465782722_0.001981608119196121","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0-baa5456":{"name":"@team-plain/react-chat-ui","version":"4.0.0-baa5456","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.0-baa5456","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"c4287f7284a24018ad7823c2541af54abba56d86","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.0-baa5456.tgz","fileCount":116,"integrity":"sha512-QMw1lUWpa0yjXbcVgqoMYA1PLjsVqjTx+9ipw3ZAOLcHK2FEppJcRxjQCq4B432p45vLKvNUPCR/1w27umKjgg==","signatures":[{"sig":"MEUCICPwVE5Cd04yboQlavUO8Pr6+1gTPlpDBEbFPcyVnEnSAiEA24WJnPEsclaYb2k+VGuwKS85CN/9FuqXRx3D53sJpCc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":316934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQwvNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdORAAkO0bVlJRMNLv4yLQvi95RqpRGs+UhRgQwMOSFmTAOaJS1ZkB\r\npgBpol0/PBkkJpoNlYBmNYWSRAO9Z4mMdmrhNqFWbLMuINfzThAkhDm73AOM\r\n34PoflPS2nn3ukrugZS50JT1PImtjHRxyYYWlovCZOQOg4rmhkgDXCz/SbnV\r\nmA89o42CbBzILjME2CLICjZFZ7Uhb96W60O3yxFb12/fLy8nijevA/bpkZuV\r\ncLQW/lrsnT+ShZganuLFQ+G+ReNotNpYd9PRuXxGw9hvkmCC2ZFnalTLn1z+\r\nw1tL1XDuPs3ZENESx6nV2X5q9FMI389/AfyQreFBfIif5mRa5DMMadsBa/b0\r\nUc6xY8xMDGIKBZXZCbg6eSw5D6GkgA7rCDnId07t9vpY9BnakSHsD6SM3956\r\nsYPA7uH9AFuEKhNETN4pD1RxZVTfLy65robNAEDCrIMYO04uAe+TVmYDQuri\r\n3hDdf75Bd3LXHgrkc0IWOfUhRm2fb57HsbVe6kiiGmj/fTq5gAapa4lLcLBa\r\n8CmJcp9u2dOc7OXY8W7hYfz4nSoHu9PJcoiMH8X+s+LNPgVcLhiCyUMcyT14\r\nhU6a66jbeETz+mW4WjYxnXXm985vTpPBOl5VodG+GpyOP55MNxBlPD1kIQZx\r\nPw4KSY5H1Ibfi7MgSY5X+E+dwnrTWTWf278=\r\n=bSwj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nWe're still in beta. If you would like access head over to [plain.com](https://www.plain.com/) ✌️\n\nThis is a quick guide on how to integrate chat into your website using our React Chat UI package\n\n**This guide is a work in progress** - if you hit any snags please let us know so we can help!\n\nThis guide assumes you are on a Mac. If you use Linux or Windows please let us know and we can help work out equivalent commands/instructions.\n\n---\n\n## **Step 1: Create a private/public key pair**\n\nFor greater security Plain uses an RSA key pair to verify that all customer details you provide are genuine. The private key should never be shared with us. \n\nTo make it easy to generate a private + public key you can run this script (to audit the source code, check out [this repository](https://github.com/team-plain/generate-rsa-key-script)):\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nOnce you’ve followed all the instructions this will have generate a private public key pair compatible with Plain.\n\n## **Step 2: Create a Workspace App**\n\nThe way you organise API keys in Plain is through workspace apps. Each workspace can have as many apps as you’d like for anything that will programmatically interact with Plain. \n\nFor example, you might create a Workspace App to use the the Plain chat widget on your website and then make another workspace app for your iOS app. \n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/) .\n\nThen select your workspace and then navigate to  “Apps” from the top left menu.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nYou should see a button to create a ‘new app’. You’ll be prompted to give it a name so you can recognise it later.\n\n \nOnce you’ve created your Workspace App, press [+ Add public key] and paste the entire contents of `plain.key.pem.pub` we generated above (including the `---BEGINS..` \n\nOnce you are done it should look something like this: \n\n<img src=\"images/readme-screenshot-workspace-app.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nYou are now ready to set up the React Chat UI 🎉\n\n## Step3: Set up the Plain React Chat UI:\n\nFirst, install the react-chat-ui package using the command: \n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and hooks\n- `Chat` which renders the various states of the chat, e.g. the logged out customer flow and the customer timeline.\n\nThe first thing to do is to import `PlainProvider` and the `Chat` components and add them to your app.\n\nWe recommend wrapping your top level app component. A basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  // More on this below!\n}\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => getCustomerJwt()\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes two props: `appKey` and `customer`.\n\n### appKey\n\nType: string\n\nThe app key is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the appKey go to the workspace app you created in **Step 2** and copy it. It should look something like: `appKey_uk_01FTGG89Q8N0HEN3572CRN0F2T`\n\n### customer\n\nType: Union of two types LoggedInCustomer and LoggedOutCustomer\n\n```jsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n\ntype LoggedOutCustomer = { type: 'logged-out' };\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website. This is used to create or update customers within Plain.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details which are signed with the private key we created in **Step 1**.\n\nHow you sign a JWT in your back-end depends on your stack. \n\nHere’s an example with a Node backend:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely!\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName`  (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified`  (boolean):Whether you can confirm the user has access to their email address, for example they have already verified their email on your app or website. If this is false, then the customer will have to verify their email with Plain before they can chat. This verification is handled in the react chat UI package.\n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour front-end will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your back-end and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API the example then becomes:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction getCustomerJwt() {\n  /**\n   * EXAMPLE CODE:\n   */\n  return fetch('/your-api/customer')\n            .then(res => res.json())\n            .then(res => res.plain_customer_jwt);\n}\n\nfunction App () {\n  return (\n    <PlainProvider \n\t\tappKey=\"YOUR_APP_KEY\" \n\t\tcustomer={{ type: 'logged-in', getCustomerJwt }}\n\t>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer responses pop up in [app.plain.com](https://app.plain.com)  🎉🎉🎉🎉🎉🎉🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.","gitHead":"baa5456d88a4e29e43d5d6a0090c0689d5251023","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.0-baa5456_1648561100861_0.39238859287951855","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0-0ac8737":{"name":"@team-plain/react-chat-ui","version":"4.0.0-0ac8737","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.0-0ac8737","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"38722f2fd11d3700319e84864659495334450bb4","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.0-0ac8737.tgz","fileCount":116,"integrity":"sha512-yu7VTNZhgN1HDNHOLFWH/W47dCmJxrjBQ31kxZdg3E0i9bxVHU/D+tfXrxEBs+icdlaEpOX7J63Yki4upNaKAw==","signatures":[{"sig":"MEUCIQD23wDxT5ZEoQnzppSatsy2SRxnES2tkk+gYyka6K71RQIgXNpa5dri7uuQQh8eadV23DoY5sMJkFxvizMELtwI0rM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQw4TACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiAw/+NY4SipwP7EcbdpSH4JszKk1I3uNvnKWsYAKtk9ceJ99tGMsK\r\n6nMmknJIZtA1AxI87u58TMWhFZgebwqMCckJWUgM0Gbyj5ACgcOEecKLbQ5v\r\n9DY5/N675QX2h60gomKExZ3yIQloD3JgjLpHtFKnHkedERKwz152/70NBxJl\r\nq6AcbQcgEW6w5HmKUEmROlzlB1KXP4cDIR4I1wvDwdqTEZepObIA5C7cIPDl\r\nxKEDvX6XZ4DIyvizOw2+grBYMMh2Z5sTYtyW5FRpWSZAgSXX9AAUJcrUSsK2\r\nwlRp374ChcNRm16PB9aQRWwsS2lOK8Wlc1ZFH+jt4rCflJQG3blbdIeuMALP\r\n6SCYvWk2KkCx+T055WawKM2vkFEhFmUakW8SXLjeFSqr7WY8pMpItZbiYJ+a\r\nFOpUzk+t5d0zwjpTwrGBVgTBf1rt06tZwwIpwQ2CjylcDlR0L1OM9c9lc0n/\r\nvaX7tXZ9/+gcyaqI1PS0SLxa9jPNXbP+DzNexGSImUSBjhxM0GQJGEmomIe+\r\nlPpUBNxITe4jA4jZQe7tQ6TmxEqIUYaLR2t4yN8J2vlMb0BJn3U1NSOErUOP\r\nn7UQ2AvKFLIbemVOnFv7CM+GuEdfP3mZ4EaBDtBTK4dmm+36S2zEGsGWAeTB\r\ny9nL65iM0pmDgg0hJGsRWeU5kFHMVS3x6AY=\r\n=WEK/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n    - Note: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"0ac873740c7af9eb70a49a89a12faa11e7fe7e81","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.0-0ac8737_1648561682781_0.871605134853005","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.1":{"name":"@team-plain/react-chat-ui","version":"4.0.1","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ad102b4cba58e1e4c71cc05845fedd890d160f44","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.1.tgz","fileCount":116,"integrity":"sha512-qaqM06UqS8ad0ab5T4iVJH0UUrO6+j54XZCtFomul70U5wC2dRMAcI2ruaHfV8JDj/DJbXy1jSEU695CtNp1rQ==","signatures":[{"sig":"MEUCIEJ/unGQdOu+Trht6hPIGqwkPjTclSrHveF1ZmbKyUz8AiEA7P05UV5+UnMo1ifUxYzRyp2C9SzEzUSlNoVV7gwAsbo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQw6vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqA4w/7BSxR/c+An0XlD6Iw0ArEdB1aKC7AMnMXU+OldF4kdGunR792\r\npBXGZoSPhJ6p+YNVDRtBzfOPrCBuZg3JYG2uyL5M5NVo8iLzMoJUrF60hvGV\r\ncwVDd2RGmhA8/uEKfQwBl1FJmfnIIl2PDGICr6TA/b9OEoVMFGdODrUI1ODV\r\nhze9w1JLm5Ugeqnv6mNwaJQwisLcgeFd9ySO1N9OMhKPQyecHnjqTToQNdXB\r\nms8+CWPdIeJCH5lnSvEtaoD0NEk49wiyKCGisWgFvvuEvXrWtfJ+oKvLzm15\r\nBioT7k7fM1m25O44hN4B875Uawo0tYdqq1sAfpbRDEMFlLCQy86subAZeWab\r\nrIZM3Wd0nNPbe9YJ5jUuos1qR8nQ+A1xNjHCw32l5t+xDHYyW1GlkGhIl9BN\r\nQZsaiC5GEBoCUJ3f2q8V22Eg9LwZaueWyptjWO20Bth6vnp5PPaCLeguRbde\r\nwrEsI/jFwOjvnYwud/877ZYnobEljZR8tATlY6d6kangviTg9prbBhy/abCj\r\n1OKtoMl4N1nuSY8qa21tM13nqbjfR8WywqOruMbeSDIOO6VgANyle/qQYAqD\r\na2Nmm5FU4HGpXly4UuSA7E6clI3ZZNEqTLBjehoRggW2W8LQuN1jHPITLXCu\r\nr89X09mY3aEsleK3D2a1Q8j1bDWfInaX5F8=\r\n=fHXn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"538c14ffa5317fb415410a23ced8cfe3862d12f8","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.1_1648561839231_0.47534979028554947","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.1-538c14f":{"name":"@team-plain/react-chat-ui","version":"4.0.1-538c14f","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.1-538c14f","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"30c791a5455572b59bbb7fb0752e852615cf8b41","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.1-538c14f.tgz","fileCount":116,"integrity":"sha512-O+mvefhxXT/BhUVrJ30KyiZwm+THZ0GOkf2x7PtHDHtkB6SFmzbYJito2Rxd82IjqDLG0kAgVesekt8haC4C3w==","signatures":[{"sig":"MEYCIQCDFcg5BwI6EV4wJa2jBIsxyQmLZL0mojEMLPT0d7zaPwIhAJhn1O/pJj4xxg9TB3+0j8pP7wnKRtoD00EYFDKseaQE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQw62ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFPw/7B7DjVL9c/6tsj/0jh0ODd6UgXXc5BBmvF8ylxadWDJA988Wm\r\neOHdZMDEkfXvcSrEc7gUpKKtpj6T+llhMxnI8B7cmHixPVZCIzI3Rrj8LX5Y\r\nz16M9JlObdZhfDTqqnt7xHynJ686MdqTpWJ8h9/s1EYz5JUej/OuurMqa7a2\r\n8YmiHvc/XAfep7lUp9bN/TV1eRJKno8koympp7dytoTaHYBG48+kGYHrr+Sc\r\nBBdeGW2VwRUb0FztcpMcxotUow3pfTGAJP1amtiv3gKYWsJ0UGYTJAWPx01B\r\n3/xKjKTopsMybW/bqSm7qiI+Yc/na6gSq8Sy9MHpey8yYtctNpFt4U005YOJ\r\n1gl8A225xGsIqNxxvKQhz6w2ZHOAb/z9zFaJSc/uYfbwkJDJrNOWi+BzcEHI\r\nxq5q4SwuJ0VJ15FLf4H68PrtTTa1cwgKtOj/xzWKNm07EE1Miu8SjEJ58ZTR\r\n6WOeguYVt5CvRfFLFiUtWR0/GYa5QGEfUH2+kbxU5VFCMrxloEozIsfuXkTC\r\n4LONBVU9bx6T74cL7dKXj4SQJJZesgDAPi/njurH6S/qpe+Fqdy/3eRO7nJi\r\nakINfNYCw4w9ktZCqAR1qtlWKjHn/rWoXKhQr9l+KaHe3bqfOM9Z1q5a4ol9\r\nh5Ic3q0j13jSsNlNH9uxznk/q9DlKNCx54Y=\r\n=FF9l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n    - Note: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"538c14ffa5317fb415410a23ced8cfe3862d12f8","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.1-538c14f_1648561845914_0.9347351120477831","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.1-c33eeed":{"name":"@team-plain/react-chat-ui","version":"4.0.1-c33eeed","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.1-c33eeed","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"a09e939230b90d9185062ef96dab7d4ee62fdd44","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.1-c33eeed.tgz","fileCount":116,"integrity":"sha512-MfowpT4hcBBa+cvU+o0KA/4MuqfDm7o2ozP6S8lTQrrVLLBRvvmaxTe3iT15Q4vN3QVOG+hRTASD33dhwPxcvg==","signatures":[{"sig":"MEUCICBVuB4R/MkrYTyoWSWZynngNJlzA5fvPryRa7bmbuHZAiEAs7Q9m3T0f/I+nLsUDbgCXCt3dupptfHNBwnyq9aIxUc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQyUoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqIXBAAoIZxTpmkS6q4/UTJR+QjY59NxFp3ecZ0Mwl0SIDOctWpUbLR\r\nB4FG623yyY+povWbfgQPlP7p7yjFXxQr0xoLnoZ9MVWoGYYbHkpHlRcZfJ76\r\n8ebOuz457me+r1NFum5mIf6XgRCCYg29Qei6gT3C2w2LUzc+YYj8ose0rnf3\r\n+54CDGh8+wxneFsUl+AAJldmaoqj5v6sqIOlQciYdPWLnAlWr5y/KRh3DLRp\r\n6eZmYpU3jHhYR8ZrCW5Nh9qPx40Ljb/7bwlI0gK0O4+xZdYpLtmGqJm/KK2b\r\n8Q1aZPN7qMsHz7NxxeIPGmLG8l1NcOOZ131d4hRmRXZyOF1yx9s4IQ7MBHzJ\r\n80feQVIpGe9TNwZ4Tu6aTcWAK0/zgIoVlcLD+sSgH7WyeWWg5Wu/C6Ivp5lj\r\n0pycFFcvaZ8y7KTezV16PCrMF8c1pgm/R9AyC1PI3o/O8E2VvGxQoKmbNo2U\r\nckNjy1hrCR9SRtPXK+HV+rNu6bKzTwHkW2j43xEbnJe3GrL4GkvudoUVipis\r\ng8QcBma9b5n9cPhkqKy+MMdMrjnR1e5FES9blv1e/K9P510PRstoJw63/0r2\r\nQlWoTAT1sbSclWnSTnO4Pd7hb9eQxYL2jLgjNku0IO1CyB2oJc17eotfxGF/\r\n5JSlFLjZWjwKROk1dzdASrb4LQ+RXI6id4o=\r\n=IMYI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"c33eeed04919ca1877a56616abde75e37fa25de0","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.1-c33eeed_1648567592449_0.125370956889431","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-f8333bc":{"name":"@team-plain/react-chat-ui","version":"4.0.2-f8333bc","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-f8333bc","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"2f027c24bb57a6328013fe30de52daaaea599706","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-f8333bc.tgz","fileCount":116,"integrity":"sha512-R1z4YX3dstjzg3pVXtPcGIzQZage03f4T1gJewxna5BLx1UXhPHTjQ+hzG1uChZMVW/Bs+5lwJdBDh96t7GBbA==","signatures":[{"sig":"MEYCIQCCEzwtpTLTGjjrzvJszx3wLdL0IjpSVsvpLI/FWYeYbAIhALOv/LQMDyfYB7rtzTZunKjPc07Mgw4VWKs6WK1Bxm/q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQyX7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+Bw//dfCkbPbtotsXDufN8FfoTqQStGCgGJHdfYoxjz/iG5/2Sfsa\r\n3geZCcNM0JtbBm39hH3lPc707ve6WjqnEI8N09DkoSNy4PbBB4sLFQJ6Gwwd\r\n4FVCQuCBRJLvcdpLYvtMzvE4GWPRNwGRBOWnv3VzxNsPX+cflCCNVt8PwRmK\r\nMKdRfdNQHW+wEzvojtTa9xh3M1GTAJeo1qO7/DO8H5L730bDemHB4HAbVMqK\r\nnWBK031nFBZMLpkS+/wzZ7NXucB3V0xjzN2yTAIZ/yi55fWMT2mG9oOXyriA\r\nyhCQvJElJlrglN4RTSCGvBof9OqlId61sChrrZv0ByldLkiphxbPjMZOp/U+\r\n7O4t0C5XHicbXUSnm7HhXrBw4pq6nVQmdmG9A5G4cIRKnXjfaui7LfSI77ng\r\n6EWEseIIvumRVZ0bgqOsSHGbfAlM8l59j1BCRjMC39mUj2yoIEh6AqMzWr8G\r\nhd+XLqipwidJD9KCSQIV4zyBspBID07d38WgwmyHYMEV6etlwpOci4o+p4P1\r\nl3Y1lUAavsP5SxJm5pN2/PBf6LUe/+YYS1Ivqmzpj2rnG9oNuvIAH1DgH/26\r\nod/nUgbrOajEqIEpOw5nGTtu07R+D/9Bwdjq3JwKnHF1Ht53cK0nPU3Va69S\r\nWFuhv7tSqd1L0W4X9nzhwwkvdAWy9RTkoTI=\r\n=Bpzr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"f8333bcda0937a8336627dab1f32a4150eaf416d","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-f8333bc_1648567802844_0.7525184577869906","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2":{"name":"@team-plain/react-chat-ui","version":"4.0.2","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"18dd40bfdd5cf1c73a11c5f6f2016b623889d18b","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2.tgz","fileCount":116,"integrity":"sha512-AaAfb0X984CA6/skgekN9/YHxMUzht3LjXyQG91ksylQtrTFnSOlI57o/kaR7TV4HvFDUAVVinCe+P2ldyMc+Q==","signatures":[{"sig":"MEUCIQCLDSnZR9nhOXctAyiCviMwnjtFMkQbpEy1dZzi7e/KtQIgbjwSlB3niDW+Cm4K9CKoencx2j8C0VKf/3TjP6cNL1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQyX9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHfQ//dMWUk1UkjmZVL2vghIfld6gRCW12EwhzUhYH/3tFeKzGHu/e\r\nXRHXxrj6m859Yv5ctmz8QVGoUiQ+Ux0Fn2r8NKVy1xw/Ca0LFCt6vXMkU7Ci\r\nm+e8BUKcTZ36mv7MNuAzYHoueHMIB65hindkm7N/y24WQ82GtzG/98BR2N1M\r\n7HHBjRfo0U7vQh8aocJ4emTLMe3WG33h922coFNyucGWWQszztSVor6kQLQC\r\nodJWpVSBWwe1wA6OGmYhb70ysvmIPWYkvsPb1KpBag62BJAhW2vFFAVFVdxT\r\nklDnNX/27W+WVUZU+xInD111hNO2+uzWVsNOmaqcMSNBKwbvSrV4jKQcKZpF\r\nTgiREyN+kuwjfEzmunKmBdVrmiTUMv3/PpetyxXT3/Ne5qBxvLMAoaoa3X4e\r\nDVvqIUTPfLZ5paGJ6d9vj1nAWYQcMbCEJOnqxdQ30Uzqi30xcQDxI40JFaWD\r\nnxL9UnG3HTrIne8HZXDHGwMQJjyZ4a88Ads/LRR7kKyOalsboNBaNfnnkkws\r\nYU6wcENPE/zxz2BFSAn6mAPApSqe5FrqIgF1nLIKFX8laZ6kJh+w8Ns6Phs4\r\nB9wbnYucHES/Dcets3mIzp8bl6k3881iuyxwOS5wA8Y/L8Oi3yx6MuRV3ndc\r\nY/x3CpILoS8FXlTqbzcb+OTMHzChCyr3Ql8=\r\n=R5iJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"f8333bcda0937a8336627dab1f32a4150eaf416d","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.6","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"^17.0.43","@types/lodash":"4.14.180","@reduxjs/toolkit":"1.8.0","@types/react-dom":"^17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.1","jest-diff":"27.5.1","tsc-watch":"4.6.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.12.1","eslint-plugin-react-hooks":"4.3.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.12.1","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2_1648567805099_0.28921311999986643","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-16c3884":{"name":"@team-plain/react-chat-ui","version":"4.0.2-16c3884","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-16c3884","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"38a20aa6192d3908bed49bb8cdb06d5aab68b293","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-16c3884.tgz","fileCount":116,"integrity":"sha512-yALLecacUifb/llzno6pN9C9V94ZvkMPVMSb55BSg7p5MT809U+MJKAZK7s5p6iwaP+1HsaHDDZ3G2hepAgevw==","signatures":[{"sig":"MEUCIQCgBvr5zmn7cr/lmxov0YC62ecRGF9RCb0+lK/vRBAC2wIgM2GdYN/X+IDGq2K9hCjRgw7DJMLxB16EUbxmojL3xFo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSsXrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4JQ/5AEFNEOkgCBAsVOag5U0E8ObyiWbnFKZgRqazEWgMam5Yd6CO\r\n95QaGzaCu08bBWQAUtWFiQjpC2lJ38gn/OxBnCODEJXVvnY6Vh778PSc6ex8\r\nVw8um/dJYdydxMwHjJ7Xfmt2IEaFNiXmnRKYSUXN8dfSqRPcjhpkMPK3GHl2\r\nWGBdFgbGSNJKGBY2Hbe5Pp2FvnBxZUVwG/wpf2IWga5nM243SOd3BuWKTQC/\r\ntD6CfyeFP4n348awUT1c+7LNNY2/hPdf45OvvXl+bZfthe23ErRyEkRa16nY\r\nWltGTfBRrkAQGWXnT3DalINBoHfq1U8PqRbVkytUUw6jYWbtbfRnwljG2Cu+\r\nrTuxfW7wQK5JUA4MEWXQ+Q+LHkfB+tpQuheG9656GwLC2S4+j/D6LPj7ONeb\r\njHrGT1D4y4DyM65hROejUOF7mH4LICn/vozEw+aj/glS+1Dle2Dc5SIayc6B\r\n6vDdftXxjS/rYN8pFlQSsosoHUY6JuYJ1pckupkyg2w8frie9Nw71qtwULH7\r\nqClo9hRaqRkFrWHE5tvyq3QApFeOYXx8ujnip7TTg+FUpkKXKK9WWxryPt9P\r\nxKOS8MSbO8L0N+tljzWSPFU5wKrgMcFKwjPAEfsX3gedDNPOzfp4bw8BLcbQ\r\nbwkJRFk6a1RTjoFFyDO84fcCskzG5QFm+tY=\r\n=KMTW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"16c3884f7c4f77f16c9e77b04299aad45e7a466a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"tsc -p tsconfig-build.json","watch":"tsc-watch -p tsconfig-build.json","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","eslint":"8.12.0","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.4.0","@graphql-codegen/typescript":"2.4.8","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-plugin-simple-import-sort":"7.0.0","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-16c3884_1649067499720_0.9449493589021714","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-9217425":{"name":"@team-plain/react-chat-ui","version":"4.0.2-9217425","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-9217425","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"bd0c5c6a3b5eac120a38573dde6c5d58b0b65f83","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-9217425.tgz","fileCount":69,"integrity":"sha512-JBi/XViqKcNSo0IEn3Rd439WLWkH0vz6Okf6AloPaXDsznHCZt6hnAZ8z8UzWD19kdKWtPPhlI8fo8kTPgbWgw==","signatures":[{"sig":"MEMCIA96afA+Fj+kh7dA83ifbIoS5KThiDut6qnqVm22q4AnAh8qorX/NfXTBHTNwfygE5R/a2C1C6nMnYUtDtGG0Bkc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5240582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTr0XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrBdQ//UcfsFA1UGnYZHOulZozC7XkRrdj+4WBZVruPNQ4x5JXvc4tq\r\nTteiu65qlUK3MC+KESFl4t/owANvzNAPLPE46BQlCQQ46z5csXiV2ANCb8Aw\r\n5ZGrbdjh+mGUhyrHQYWSSq7EpKRGFHFSencRklinlO+9HWPnVCmzjJ2klyFy\r\nvYL9PFuudSjS6wXhyTNRKnN+D1FpjMRid+oo1Y7EYSwNuIRZa9VF5z80tbOF\r\nEFPu5xPPavLZzBNe0cX7FjYuIy9lno4T/bOajm7BNuZXyzTqwELgUNvh6y3K\r\ndfjz9YXiragn7d9MLdZfKbd/UTjJoapniNr8xoyA2f+oAivfu9R7DfmRDrR8\r\nGdHpPEhf17NwRTHO0YoO+7Ihg6fL/fiVX6p57jehaCOGQlt20v6p8qaIUaox\r\n949xn2FzgkFTzPVa1cysB9i9l+Vvejeeh6oDiBM9S2hmaBWmoumARnlY8bXu\r\nhz4teJdS/RP1DliLwYydLzE56ITiagDEHMao7JYKUuZvY09K7ay8IABffr5Z\r\nm5MGLfXNYH8JQk1+63eqkuTR2sQTMZRM+gQRBm0uBm+A2RBpqeFGUf2EboNQ\r\n/WZgck1NHS7Jb0/vHd/oVt4a77Ry+dn9wU0Y41SNpU/A3F7/5/C5wumquJkn\r\nA0QqHoV56P1wZ+EIDiE2V9XQZYADic9KF8M=\r\n=a+wl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"921742541674ee4c81dc75687b87da0211c3e4f1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.12.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-9217425_1649327382646_0.5204896629778017","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-857a494":{"name":"@team-plain/react-chat-ui","version":"4.0.2-857a494","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-857a494","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"012fc884742ac6718c773aa6f05cd746f685ae8a","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-857a494.tgz","fileCount":69,"integrity":"sha512-Z/3sJN9D3+dUQffIjyzVm4Xx2R2z2ysZYsxLYT3Nv7fB5BuzAJOkU96caqqJOk7EMHb4gvSjSF21+pjJIaOy4Q==","signatures":[{"sig":"MEQCIC4cwtu7h8D9N1zCjgtYStb+wCqCu8Tf9YD7zh4y5Ck4AiANRr/+G8cletfF8g60Wneq7A13sxA/dT20RqhaE8Rwow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5236103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTw8/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfsA//eIB1sCGm7qdwKWXPoYn6TEXK90Ea/NsWXRSq9hK3/OUMxYGX\r\nphQLqNy9WVV+yHPhlriEf+gORRcnF1/8luO/YPR+SzCQmXQg0uEsx4EDxO72\r\noQmo1NW6eR5OusXSg8qPKwSibOK/XSPXG1goXdduLiUnLdkrcggH18LIp10M\r\ngDo/hngxRfktbn9AVj/Al6qQAAomDv+PVON36gz1SlEkETrTCUC9RDJQa7AP\r\n4SqKYxHtMW+0rkje6mj0eKT1lAIUi8B7cu0cO/RSi8xHg4nFSo3oBjlkEPmp\r\nPnLHb+W84zloyYjGT8UJdcQZtBRKkM2Z6AO6oIR0wLHBU9+ujQG8Krhthsoe\r\nwTNoTzzeYhlAMQ7VQopihyMkkJxNx32e0+7gfwomrhrpA5radV33kb2w+Df7\r\nQW522mprk3OGASKybE1ygebAdp2p+46ha+qwx9GfKKXWtWT9DaLZTcJ09Fny\r\nC+GKAN7SYlP/Vjeu1Uz2V+yjfCZ134f8xOfShi2z2uCVoUaj7hSghzC1HAnk\r\nCELTO3s+ak5gxX/o3eC4YcnsC+EjoonvG1Aq+L8MArnmc1ZI0eorrnXsM2L7\r\nEGhW0HZ1oPhz4t9lnwoFLlzNRS/yXBCkEP+4aHI2krIznFyG1Gqx1BHXXnsk\r\ndXlCgtH9IAMlJXqQFi9Q1PPDxqM891m9F70=\r\n=AdkH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"857a494770cefcc1aeea25dc1714e57158883a59","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.12.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-857a494_1649348414711_0.2561693839855814","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-495b5a2":{"name":"@team-plain/react-chat-ui","version":"4.0.2-495b5a2","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-495b5a2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"81fa7bb803f46c7f051495c63c13d9b972e295f8","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-495b5a2.tgz","fileCount":70,"integrity":"sha512-9yr3R7/Q2m7O/dZkxNjP+NQ8ZZaZA/Lahu4Mi+ZLlvuqEvHZBY8awKEt96v9xPENVKPe3RneYphXi64uqSu5hw==","signatures":[{"sig":"MEYCIQDnxGrZ5ZUdFj9cfPU1wibC+ky/zA2thGKLdiVYBxltvwIhAPA6A+iJbLYeysY/BITHAh8KeZ0KoSGhdJ0q5Pq38im5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5245075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVCI5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolrA//a3OeQ6wZ9wqayemfpSP8rMDSc2rrpOapPfmU+RYfpjv2aDum\r\n+pzHAZc7AKdr6+kHEf/XbZ8GUcT7qOWIwoYysZF1megu9eHZS37QrNzAEmOW\r\nfZYwwh88DiVf3JhozJ1W5iBop2xPgNPoFwl/MkNs3HzqCRR1b178E2Y1QcM2\r\nAZfIiXGtTmaOlebAGbqRAVTOKsEVkjiYcCGkQB5w4wYK6qWtOPHdnK55DgNw\r\n5jlYDIZGwUKLB1aBhuDpn9Cgq0Lo1YkNxjYtWc0vqG6ixOBP1ixPPZzURk8f\r\nEflaiONYfwx88jB1xUXIjAVu+2CpVlSPfUyyEh8BIZlzDMF5elbsPQk+R+xJ\r\nRYRUQFruFBvIRQBCJgOzJCtHu5df6FWIAxNngcUt03GWoBthxOAWKh6uz4qw\r\nsXCGRc/Av7iG5o0MfVn+/zYyLWTvTYCAL3/DOkcUzvLJenlGSgy2KxWWbZsd\r\nIr0o8nqU0DSe+wMJR+bzmzdE+M8bA04S6J5J+/uM8Q74XEuVZADhrBY0jQfu\r\nFgK0kyuDW8/am4blkmDmbG3gFyTcPb5dVyhkqNKPjX/bMoGApA16ch8B9dc9\r\ncayUaiiZKH8dmZPQTySgCv1UB4nk6L1MMzHgKjFbsTuWns0XI4hrsPY6WQ5X\r\nokQVNBdVjVeJj8hEBebGXDSYoGMz6AGOhTo=\r\n=Q03b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"495b5a25c6cd030f25a8773b8ed3217fb766a1a2","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.12.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-495b5a2_1649680953011_0.6275982890562697","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-888d6a3":{"name":"@team-plain/react-chat-ui","version":"4.0.2-888d6a3","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-888d6a3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"02452b618c14e1100f7fc4828dd517a6341ac15e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-888d6a3.tgz","fileCount":64,"integrity":"sha512-2lx2c3Yw7cR6hBzvf/qrC7hmXprbI90PBE4j/LqQeEGr8kqMe3zhO7Z6/A1OKc/mGx9d+AWH2btQjGGPhAzA6g==","signatures":[{"sig":"MEUCIQDRDwreEBXGnnaWRQVI0H7/dHELMuAdWSgdgSJxPJZhBAIgX9X9+9te0ufNxhuYq4A6BRCN9oTZq6hJccMu4MsDkPo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5242763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVDLDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrc9xAAoePP7WXTQdaDzIXE2T3S2rlgZhmx4sen7Ki5+SBZ6wQwwFcu\r\ng2Q+MZsgWC9xBK20zB+cMDRA6ZRY0pXaHW/zz4+0qWaIJOWjzl65/4Hh6WBC\r\nbtqSzxpeWM77EQyWIaLGQuKp6m12C1GSQa5wbo6Ves6D05Z2vyJ611lEU437\r\noc1uLGXaUGJDfC/vh6wEsZhh1y7JMniXm63JWXQGaIlllNe8fCYQ1x4JYn3k\r\n1z6mVMl8dtginCDB8Fz/+ACG/+ps+t1Q5aJPktPJZ7r/MSZw1JImr/IazgiN\r\nfFhzOTSJ3OzfNu7MWcVUXQIOUoFmFeQv+kKUXlAJx3qU4PtVUD5FlpcBS1dN\r\nGlC0wO3UZKjNdi0tJ48dngRffGZqFShS6+lbODff+PkyZhUQtiJQVqIVTMiD\r\n/sl0hjXqV5b1LRvICxR2o9Ffq3cjbSzaT/c6ivy9Mjdm+KE8Rb0PDCh5Q/2M\r\n4/nrLp5eK46oa9vSVNFjzG6mCR+z6tUNqoL/W6R5fQLfO5lpU1lkjdMYcKXw\r\nDF81tzK3Ru5eOUcVgfWLCKq2ZdZI8Ti6sah+413ZiwhIPcL60wH2J50dIsme\r\n8M9iCmSpVfUDGK9LdE+5iOp4iuge6nhbesDvE+JZhE4OXyv27r6q2B0KcCg1\r\nhTemUq89jor3yXZP4wJVJbbOH9v6YaA3UuY=\r\n=vWxp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"888d6a37fad84edb4022fc1899766e0a6bb2f879","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.3","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.6.4","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"17.0.14","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.12.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.2","genversion":"3.0.2","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.8","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-888d6a3_1649685187690_0.030686117087258102","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-e8b1403":{"name":"@team-plain/react-chat-ui","version":"4.0.2-e8b1403","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-e8b1403","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8fe68c18033ee1db929ade48ac54f91bd683a34f","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-e8b1403.tgz","fileCount":64,"integrity":"sha512-82iiMlz/6l6Zh2qxVSSR5qTmndh738BTw1F6cA4Ad4RSQyWy4KN60fopht9Qo/i0o9rghWEadijucYsKQHRJ3A==","signatures":[{"sig":"MEQCIBFWndGaMZxHQP+fl1zitpdD9Gz5i/tasOkXf4X2YQswAiAViGcyV/0RpVb3njZ8J2eSEq2Z5yYUEeJKI/Bp8KUfKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5246608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVUi2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmov5hAAmPkiNnVE+guhxs+dyQZB5dE2IqsdoXOrj4nj/BHZSL88O/Al\r\nKxcxvbeDRV8L+c7i6Sd0NdqqwuJ0U0WJUCNnQCYXEcSXpq/IA+GuKeRYu8q3\r\nhG1AuB+BNncD6H9GfD4GUhtSd8jC80x2Pwfstb/s9PeT0RDWmB9lOOumWMH3\r\nK50Zfo3Dh/ox4FnjC+OwgUsAtsYq5QPEVqZMCCaaYCKDdmLofOWQJi/uPGAE\r\nyosT52Ozii4MSpd08cSg5fK8S2HI8k26arsLgtTOLEoOiKEn9DI2MMpC9vLj\r\nV5i1RK5wV6Z19qJ4Aum+/zsTdNeqxT6YUq0oa4DEbx04LW1uPMNgedrZ0DNX\r\nFz0UWJEyGacDCmXe30Ir80J2g4zhzVVsmjdj2oLpu94pilxbE+f1rcXPV3z7\r\n22/cmIMeVQQbQEE7DVHhisYgHz+dHqOL4deGHNGrMoplhqdszU9Bct1vO5DO\r\nr5YYYlWwIQMhP7KLWtIYGs2r3ZPOK9OxBb4tLtHtuEcw7ym4uYgeCM9RlEFd\r\neg96GTKQGuv+7D+S/ChsOsz5uZJ2WN5CYph+0WAnZ7j0kxcdOagHQ2fRtggr\r\nUnbtNJmjestuPCuNWaIK4RBqpEwdnmdrcDeOqSF85D8YEymK/Bh736I8GivJ\r\npCGpAq3vsEf2SHBNx+4AJFImDaUd9TWmy5s=\r\n=PHlP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"e8b1403640c02ac84834b245ce9cdbb7455c1660","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-e8b1403_1649756342196_0.14293905614157443","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2-8b2c6d6":{"name":"@team-plain/react-chat-ui","version":"4.0.2-8b2c6d6","license":"MIT","_id":"@team-plain/react-chat-ui@4.0.2-8b2c6d6","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8ce82ad02c7f789cb89a37805958a20cc59def7a","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.0.2-8b2c6d6.tgz","fileCount":64,"integrity":"sha512-NtRoPM1LBmpg4MQhK7n49qtyey/kjJR1lpZ5H3lJfW6c2ZVsUFGrpoLIu/t20OWHUgOFMApTKMr7muRrehTjXQ==","signatures":[{"sig":"MEYCIQCk9kiDfoC7RjPwuYRESUjPYj/FhEeDwnIbzgLwo7OWuwIhAMIzwzonYVmKsPfZp4BmT5ueDwVWdmboz3+ngiXe2LtJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5246654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVUtNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWzw//Y1Exmk4/NQwx2VYpMNnIc9qfBeU+TTsYVya3sZzfCmWb1CzJ\r\ndy4DEcf+4XIBjpKOltY7KPnnKIeJl6BHlU5H2i2Yrm4HBbUwM9eVWdqsWXeo\r\noPs9KEfZ9r/tGBEYvKxapf12ZJN7lwPn1EL/kHdO9q5yGRdpOjn4w1NgYHK3\r\nQCZY49GMuZYmeatT8kcTxEyBjIQwF9wDtut0uio2Biz+kOrRorZQvp1y4OjS\r\n28m3N3kXC9Z+5mt/OtrMR6k6uCX97m+RKNUdlEuF4Tabs7fOKoEgIZrgZLOT\r\njFKnW1h90qaJOUk0GB4+EIWAFcpu/x6gYfm8w91ZRXDfbrd2pLG/0IDezCZo\r\nHzfciBzDR47aa/ocAMoUd6bjwEdSHq2ajKWlVK8PlMDmKHTBVnnVlFO2rxv1\r\nKJzInpjG+Xqw8hhi6tAAITOrp1liQ3ctcJt0dGLzoBLNdFmvESoIJi7lJDXB\r\nMI4DLsE4gPUYHSCSPLf+BnA4Q+UrVVjbYqcjyWhafq0Vy2iUuYxujP4jCXty\r\nhXg1RUQlky4u31CDyRglSSqGdUVLHw5i6cdubgO9cRz6oQrPWiRNNYTUiOGN\r\nkVWM07JdUoDqF1m1RmP6qYnPPltRtdfo1KPhVodQ2lQ5TuY5NXOgT891No8N\r\n6xW6kLAuKDPPr0bLEZyJz8X8LkbT6LJw6vs=\r\n=Obdj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"8b2c6d65c2eb06febe4b140e348fe9953d70ab54","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.0.2-8b2c6d6_1649757005190_0.7449058229426102","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.0-c09ca9a":{"name":"@team-plain/react-chat-ui","version":"4.1.0-c09ca9a","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.0-c09ca9a","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"3f5a2cd1be6df808f7ae0e0d9fd2494e124c085d","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.0-c09ca9a.tgz","fileCount":64,"integrity":"sha512-QQLG4LQNWMTsTYjd3SIoyQ3D1cTDHD21DIV7Xjw7DTjKPXIzlsejnWI57nJ52KKGFZNGRzshxZZNIY84RuKu0g==","signatures":[{"sig":"MEUCIDlZOvFvR+Yf+10tXbZuJP96AGJcmpAh+9I80bG5lOYnAiEA9Ld1R9pcIBi2zXtmX5JJHti9VIOR1oVFR1Ht7G5vw3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5247104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVYCLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFbQ/9HDprh/sQmZwr6UQt6rRk63gxK51EyjDgYfeDBzREOVMX8Qu7\r\n29SRya1nUHFI4eNF2phJE4cf7P3SmqG+Y5vVejqlqdEZjXwrfQfxEyipZHil\r\nEoYpOTzxouwLxE9Ac0r+QEjSF9812f3mXLYP0b9qo+Ud+cKkCYti6nLVK1TA\r\n0+x/Z/cszWAIntH9nHH3ihiZuYge218F77mjtaNPANavURFzzlfIt+/s3ZpF\r\nOfz6W8D00NRj3KYuMnbmNfx7fr6329gHwCAo4IfFLTBgZu4ddaui9l9DMzSn\r\niPxmIpHzMw1/72h7N2pb4qG9kXD1pqvPlg36c2TVKHhErN9ccCV6IrEenoZe\r\n6XRbbYKFsJpA3+hxj6jFuDda4vOnmmwW5/QXSoxritDLt4PzV1dh7A2LQJRN\r\nNHXdRszCrsCC/VNEnmvNQkwHKu7k0efKnKd1cpqVd4nks3Ld4AOYGtG1yf9l\r\n6SgQOJcNK2OFDW8dGlizyNf0JqvkERZkbPjowzhBu+wuF0YuMOdi1sUkvaVc\r\n9nz7CPURhmdLEtcP+0f4D8XLljby2ilt9/UtS8O87rdLnIKZYvHZUAaxQmQp\r\n5LednAKjckDOcX8sCcy6npOOKRzrsj/kEPaMGS4CI+06a6Sy4O9LtMDxaeSA\r\nCsSSlVbuQ2NWXP3xzafGZqbW79kp20O9uXg=\r\n=Nlly\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"c09ca9a898f4eb605b1986799fd5f93d007d7e02","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.0-c09ca9a_1649770635063_0.1125072069050641","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.0":{"name":"@team-plain/react-chat-ui","version":"4.1.0","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"a788d68b82a10ad286ab3e797316d62b3315125c","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.0.tgz","fileCount":64,"integrity":"sha512-3Kr4UJhxDBNeWKIu4OoWTPaFPPEsLsLt+xTUDMIP155YK8ck9veP1/Jo6Tdh32vNu+62vri2j8dNg+bVOHlvvA==","signatures":[{"sig":"MEUCIDv6Y9O6dhKY0KTGJiixaz2VbQUgTIf2Qh6uR1ITPuEXAiEArzvXzkieHN4DG1FqVh2U5PYVDdDhO3yCfFtrl00et/Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5247096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVYKJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtGg/9GTMH9w3mVi/FOkwW6u3y526fW0aEfb2Df7Gou6JqyjTXDjlP\r\nLmax9dyLnMeaBykIXSxpDz7vJKZUoa4T21FY6vYQSf1WPHDyTqepMic32Qlm\r\nDu0Ny4X795+MXMKZazdaMwB65GpZb3kUdtbVkxQZL8jvfF70cGxd5dO+irXL\r\nnMsODja1DZA/MdvzVnp44+CAB3E8LbLpByL0dKZf+Jq306ze+h2pDtDPFQyJ\r\np0yXE9RzEjMAgMgtWTtQ13jFb4Tl13LH92lt4w03JeazEQkcTHmH8oEOuc2W\r\nMeuT2MqjKt1sR1QTGcWgsrpUhogmC+a1B1K9XOfE25rlg57ufUZUtxjfdny6\r\n/vj06yV9MrIaim/OvfpEt2lJBQoqA13Oz1gkz37Ado6PEHc7p3QpJv7VE60I\r\nnTT0O16XpNS+8sxsL4j/Wn5sY/uV+XXhEHtcwcgBRPoWW68JsVmGdaVmrgTs\r\nj9LPxbQmrp2YUgKLgw+Ltl2ZsRHe05AbiTjpOYvIgZggbh/T78BS4kV/G+BF\r\nkbVYsS/1gptGUAjQ1MqzMi88ibtVaksP6Ykwaj7OHhzlp7+U/nR2OgCrEVVe\r\nUNgUeesA/3YXD0l5xIN1zEGGGGJKltf9CNw09pD26/y1pQs6+APkqWkMP8jM\r\ne50tjIUOopMp+VPCYDHrtSColfQmrTRTWXw=\r\n=Y/rs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"c09ca9a898f4eb605b1986799fd5f93d007d7e02","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.0_1649771145143_0.5057917884528091","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.0-ec5c6f8":{"name":"@team-plain/react-chat-ui","version":"4.1.0-ec5c6f8","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.0-ec5c6f8","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"317dd1752e8cbbccbb5f22bc1ed68656cca33fcd","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.0-ec5c6f8.tgz","fileCount":64,"integrity":"sha512-DNU2x8GrnhQt2SfCBDivdmdVk/aJdmaDpM55aBETSvkh5rxmtbnBLigWuBMZ0DOkD9ckMKcxSHf4q5b/WUJ6Zw==","signatures":[{"sig":"MEUCIAacDBS2B1b/N7CEAgDk8dToOMATzira9l9PezG/cmBrAiEAunFpUCK6QH/GSDJALbuP3o21lEeeDVY/qgd4BMXeYcY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5248274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWBgPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8ug/5ABtq04smxv1HsGin7h6f58yvdWTQOI0c7eAm2MTIppecKzht\r\nv2Eu+PYL7h7vjB6vtZz45XjjwbssiyRHnVRIBswxmwhVFqTZ3NMGXVKPSiBo\r\n7azkAwuBBs6XCEAX/1Q3a6Vj0Qy6I9Udl8eDoZVXzj810776BGPQX9pY6bnY\r\ntZTw1ga1i/XzFBkjQQGAVI/6vvxia9CaN6hD9ePS06pFW3MG+W2L3A1IeLMX\r\nCN7e5vdO4cvE+AFlvdTjh94FzemGePuzNiX8i4t82k+oP77/VIIaBtZL1pdV\r\nC4UvkNd2+XB5vOEsR+LSjgLx4+VXXnWtdvMrL/7GOnrgHLnAp1jcQxftDFd8\r\nw8l63CMo1hrjAzjg06xIZ7FU/i6DMZ8qTzqhdyWg9QEYmRW0gL9enc7ITaP8\r\n6BZ5pqNc/RXwtjGJN/2+8UaHVCHPfbMi/bVyDwyKi7bXEPiGYYBHZx9wWBRY\r\nVX/zJQtrqvmmkrS569T2zeyCvNbhht6CxZEv8K1SUzZUO2Me/wqn4P7QOBDn\r\nFzASdBCc1CG/aljJ3AZTGtjS01sBX7QA8vSpRAz7BOG6juRCrC/Bkl/DDEp0\r\n2IG894OpGgnP/eBX2Ruow/fYDkLVaI/m3OqRGEG83kpfBDgnjrByUuN2ZnP1\r\nXqyeY/RRGdB1bJb5qiJKGmTMwP+VM1HCKeE=\r\n=9aty\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"ec5c6f8bff1e62368c6b511f248d47ba17cd87d1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.0-ec5c6f8_1649940495475_0.3753604863807831","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-31ea14b":{"name":"@team-plain/react-chat-ui","version":"4.1.1-31ea14b","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-31ea14b","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"526115212c8b89355dc88c832a1f3a2af58b717e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-31ea14b.tgz","fileCount":64,"integrity":"sha512-1LJwD2Hffi0R/NIIvu9bZQpqQWF4KcN/lykBKJTvJzWqtJ9FH3h9DQgJjLorT/gLoYIn5OS6iVFURZIndXLQFQ==","signatures":[{"sig":"MEUCIQCMYgoG+LIU/HNypkXTIy8C1PrrSQSmu127+vJrx8si5QIgMKzCDCROtC5HC6j1UJ3DhGS6moWHUDWrxwDxHq2u/1U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5248399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWB1HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0bA/+P35A218feBtwnx9RiL2GCfiG3GRVtt7JOjsiPR7qMajfsJCE\r\nmos9n+ll1ubyoEJ3rv6xBq5EQaC0rvI2NuBnZzy+krLWV9YvN13MX6VygBDz\r\n84oVld4gkZYhSTfNTuPBeFmcvNPG/UHTzbpBLp4ogk5hImACtv4p3oKhAK5E\r\n3/3ryUyOaLH52N6Nbhxb0yBRIEIXmp2KadZjrb3xKnPTbrD8nCNt5AOxG8/B\r\nZO5B67xy2UERtLRWAQk6FSKUPNrMb1TsKx4OrWNE48rIxa+Vavf/gQt46L1i\r\nkcXLiJ/MirXrrLEY3WbASqBetz4eElgl43TuGVhjq/XfE1Q+mLoHk035MaEi\r\nECZDpdgC1RTbyCOSSt7oyLSaFPCH4QP/TTqHlja8CmIchCZoaYmUkpeN8Nya\r\nnhSck749rIsEzJVlC+BllwDg9+DIRlZZAnJ1aNU95IIj2mk3+Moql0d/wdlT\r\nLNmRbhH6z7CZQ8Otw8weRp9haSNPkyK0jDn+3m7O6jv32TOnk5z2CCIbibb0\r\nSyINKVCheZ+Yn4rFhS6C90k0hqQsi7UHeLkGJLkN4tuconTuwYZgMzUpWori\r\nPgYeuettAtlIBqEqwRtAmYinwPJHL0CnuRRwRvjdwCrhGxeHbcDkLQB274yO\r\nXdw8FIZKLIDCMTAiEwuGE5VrJWhNqo56ueQ=\r\n=+hKC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"31ea14b229074dad181da948e721857907446457","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-31ea14b_1649941830754_0.9032593311273087","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1":{"name":"@team-plain/react-chat-ui","version":"4.1.1","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"4ba8b5f4d0b4a3188a377378af250d96a08c8424","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1.tgz","fileCount":64,"integrity":"sha512-qyVdh0AS6ibhdNKqEnTrIzWIBUgfsoraIsqr+HhF7G+fJcPZ9aej0GvrnEq/52/9Gk1kKNTH2mHGdD9PwvRXCQ==","signatures":[{"sig":"MEUCIQDkqncHNfNBVq5zQoTzAkmm3ZtbTrpCLONlqEMfKgnPbQIgWIwY5F717+P4PH9UN8cFog1viNp+ea4saaCuYDWtTZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5248391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWB16ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTwBAAjlFsl2ynbfbQ71WYoN/M5gdlCDbWpRxpI4UnTZI4RLBGWZcE\r\nf1Aa78PI+WFFFH6DyY3M1syqjI30VCEDMVIpDv2Zpb3ISOtUJsgewM01nNtB\r\nNaQEtTkTCcP+zfhZ+TUwYuYPoDP/Ao8Zd6qDBduBRVj4tAOHXxPpLce6wtXH\r\nQWpNfMTL+sRMfpbzChetI+9RyiZGNiKgZ57/0pmEstQ4ykoPsp000BE4AQHL\r\nd0eW1QHdZQvxpqHyMm30stqe+2/26Oi3kY5zA62co+x5+fY2jqk3VUxc1dEd\r\njUqU0vBD7WyKv6XHfXs/T0OTMMq3Q7pgbyTx2SjwGVWU9TouPGqr1057pOvW\r\nB2FvYueCBV2l+VnkpP6MCTBqZTpHu7iRqRGIIJ9VQCndRzkmk9T7BTHIbdNr\r\nDPC2BgOml7YM0I9e9pWU6OQZJE6MPlG0+fZ+SB0ydEHKV1WReL0+jefsIozv\r\nHg+3TXLynQfepZT4A/93aDyFvXcUMsMy6YMF3YhuTUeD6TgJR0HBs/rLtF9q\r\nHYrj95IaBqV6FRfbN/DI4ECoWTAjUep6uw3KVrF5Jz5cvmrKoPEhBgHpo9Cw\r\njLWTxUsTa9yfQET12wMzJ0oN2l0CNTKFisBywpiSKc4hrqdhxvsidsX+zzII\r\nt5dqX0xrxS6a4k59rBQzgGfh5+KEO242MJw=\r\n=40iZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"31ea14b229074dad181da948e721857907446457","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.1","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"7.2.8","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.0","@types/react-redux":"7.1.23"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.0.3","@typescript-eslint/parser":"5.18.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.1.3","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.18.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1_1649941882176_0.14007488645446275","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-fe374c2":{"name":"@team-plain/react-chat-ui","version":"4.1.1-fe374c2","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-fe374c2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"693e1a50c76b7eb77321208cee0d49564558d408","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-fe374c2.tgz","fileCount":64,"integrity":"sha512-UgxQwHnf1eEJl/sfM5lWBwC/2T+Oa3lRQKb4d5v5Fbbat/K+iR7p17iTqFVH+BuVtoC8XJTbtHABTRG9oXo8MA==","signatures":[{"sig":"MEUCIQCDjkc8GeUxSqhbNXyOoZRRlQI2rdACFDLDm1ptoLP1UAIgJ+dqeE3t8nU56Uw6tx/5vEpLaw/EpsGOS8yQVX5sYvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5147207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXuSSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpjzw//UpitXCd/g/unvKEe6bKFskLcxYkEzIU0eTHmYA2Q18XltgWr\r\nV7lDHiM+zrDv8Xn980lmjjBktUY3GSOWA3ucMAv7tVz3uN1AaY3z2RuqgnML\r\n9oEnFltavwyJY1ZZO/dm3lPAIiMiKWCpzpqXZg5x9KKQl87CECF06ACtMjNd\r\nYu7by3DVZmbTJyNjUAo9yde8siSrBg2qw0CO4E+aj8VF7YmvnLV6bUsmhQGI\r\nR5p5s3rQiv6tcf32xj/r3rYBm/2bGY2y3kNbNyY0rYthuUw+6jcJQjLTXmE3\r\nc0i/WFaVrYkUGUaZCnRWa92UNeF3O4NR+q89x8Jm5E8XHqY242Q8XB5ny04Q\r\nI59AiAPAVftbZRqkl8UVQZiT/JupfGP3gn74dXKP+GW7d3AHAz6vgtJy0Kdg\r\nrmRxHx2378lBRnmgHWSliIMX6LM+wt336s2tBMoNcZ4pWnqnXZ3/+6YRQ+tV\r\nwsxJj5HCfma9jkqNyjuEWfh/nH9OjiTGRvBkTIM8tjTrk3ZcI4jSxYNhlhP9\r\nGCPhGw6v0pkQN9bMJu8Y8xQcEhJk0xufNZvin8OBv3qDe41AU377XDX+qyWL\r\n58Oq+gYzlM0hVaGs4tMKE+LIbuqctCNRWHtmiKtCSswxlGq2UzO+lVilNP+R\r\nG057+bINxaPO6ZDrgzIU2Ev9BcJpTfXWx2o=\r\n=iEgX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"fe374c23bea0291f382f383814268d6dea3f3e7a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.0","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.19.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.19.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-fe374c2_1650386066490_0.11094826176461425","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-55e9dd3":{"name":"@team-plain/react-chat-ui","version":"4.1.1-55e9dd3","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-55e9dd3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d3e87d814b338affdfb733104ef782ab0856c0d0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-55e9dd3.tgz","fileCount":64,"integrity":"sha512-7TI6ETj/ax/ADMU7ZEYj5iNiMn22/TeYh/IrmpKmBZ2aesqHCEJHmkAb+H6rg5JBgCAhwlcy4PTJN9T7A4C9eA==","signatures":[{"sig":"MEQCIBGuWFxF5M8p2hxEzOEMwScsYm+m8HzF914m8qhJL865AiB6g6yZipe+YmE8D9/cUkCcE4boosgwhDb389u4lDzYOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5147207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYSY/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNDg/9HrXqwlGYMapxwGwo7vftUG8EwT4h9F6qA88GH4THlSCvRmLx\r\nPbVUtyHLidUTYwDu5+CMIoUgy9tpqGkw8REfOIuuvAjpPZziAKckqA76n2br\r\nzXE5TotLoQziz4EuUY2ALbZbg17P+Iemqr/97y1dm+vMCDKkyUSEYQwOyQmD\r\n0vhBU7adK+mRx+CKJ43I2nWpTXEVGbccKbm6f7PmjOPPWAD16SR7LGgqoJ/F\r\nhpMdproGBs4HWHaOF44OG3UzD9PS8lc8+UTEem/FPdEVVyTZuToe5lcWcCfs\r\n9EtqIJBZ2Ce6fbIAmKZHuFIuMCbVrG3OAv6aOixyBz5/bGxBxWWO1qCmz/Rs\r\nzEoiz1h52VCozrVzZh6Ow9voNblF/kvMWJt7qMFx6Ji90W0JfP6tmlvqPimN\r\nTO/gIr+xBCCOfvghTMy1IRZEVihbc9MDcGiA1hWDD28mPilPEcarq7YUeLVM\r\nWNz8ZxA1yfA0lO2Fiqc2bh67MB0+UZXziPNfb58fHhxhj8P3DAia4iVhSCAd\r\npNo7OHrNEwamASZHxvssPzua3EQ5o1LiPZsWbv05lrrqtT32tCQ2oGfuVN66\r\nB12/kAW9bTrB4YNFlF+buwrxmV0TczFXrHLv7gsE+wqsqDxF/81Z/p7TPEpp\r\nNcOrIwBGIHhotxsqBsU9rgpzELntcch/6gI=\r\n=6nji\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"55e9dd30587dc6b233cc1becb37853ef02610b65","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.0","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.19.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.19.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-55e9dd3_1650533951588_0.3952403563392888","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-c45d14c":{"name":"@team-plain/react-chat-ui","version":"4.1.1-c45d14c","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-c45d14c","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"f8330247a0e71927087a770b175932a32448a5d0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-c45d14c.tgz","fileCount":64,"integrity":"sha512-Uzc8QnTUQacGGC0OpLNiAle0+9Iw4P7k7jPFKtxn5C5e9OsnSIdLAUkzz6Hoz4TcHoVGuOcYRj3ygI7NB8LEhQ==","signatures":[{"sig":"MEUCIFv28WFqIUfKBgxmGIaxxOgZ7zc9rN2lpN1PNUzU/iVAAiEAm9UemH0ndpszamicLaJnnsfBkofpPySxRmhO0DjVTbw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5147207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYSjCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTUxAAow1ceoN2RWTCBtg0B+A9RU0oIpVkMD0E97d0aQ1QGr5Ph2EG\r\nBgaL//Uvne7cs2PMvzrsEmMGQMgxYUhe8rqWed/Cq/RrbJbF7EojUpiBAbfA\r\nsg1C79MzLnhhfOukW0LN5FvO6l3bGI4GJmumom90fSfkBb14Lm5DtiJn4o53\r\nOVTfMsdY1qYAOC15PHPvUYw4z/U8eLJHEQxQAMNcuvhjev63vCOTwjtuXM9h\r\nRiA9el+ruxpUOwgNlwYjgcpVUA4zYHWMwnSIqpidHZto95jrHUoToL29unjq\r\nvc3ynCvmGNDk4A9x54BTFQXHKh75sRW2Aatjc84zxcgGA3U21Hde6QWO23Cn\r\nB51xT/twpdu6IBkWOB2riI7CLIjyEuyy/xGIlbjlCgufHrnHmD2rWOKHjRj/\r\ntUje9C0/8WmFeGVBSvZRQ5/iVQMHSB7M0zMxb9YoT0WtD8lVuD5wNRkVgOZQ\r\n8gel5S+6VndE86StKUN2k0zFCzP6yXd61AYlVcvIlbKMKxpUe1GL7PekzWYp\r\nN41j9HdmIcweafoGh+EKiqI2ywv219Gu4sG1cI/O5Zdr10AIK5gjSN+mPEg5\r\nDSb7F3Zzc90v7NkQq94jDf4jTUhvo/MJFrBqUQY5JagDBV/53zsCxYDqWXGb\r\nZEHl4pEG9DBXEmnBVILqJW5Shffbe6zrI3U=\r\n=0Lv3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"c45d14c83c643aa32cedc3a4ec01feee5ab8c326","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.1.2","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.0","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.181","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.19.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.19.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-c45d14c_1650534594296_0.22748304408854492","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-9e7bc00":{"name":"@team-plain/react-chat-ui","version":"4.1.1-9e7bc00","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-9e7bc00","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"d01c7b8e94eff8a822f4039f05d912688cffe096","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-9e7bc00.tgz","fileCount":64,"integrity":"sha512-GjAxYQw99EF84LdtDbymw/K8ujrgmsjzLLB9oDcGG37RB9sChomVDmGFIm6o3B0DFzV1axzanKc788glFUi52A==","signatures":[{"sig":"MEQCIG6MHLn035QN7iPhSClCVHcJUMdXOU1Z4Wsl1RZxUK4hAiBeILveugXAHR5YpfioPtrXv/y0byHh0rXtVNtGuD0SDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5149367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYSk5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7Ag/8D7k3cU6ZSIMP+8wOT4y8QB4c5ACEm4ABbferFQ6JGL1gioR6\r\nRQ4tpNZ2WqbmO3jv6PiJhokxvOkCWbjj5Bv7VEUa41nxHewLu1ouT4d1s/fV\r\np+0FQAZ+u+sjgKz/Yaeg4TjiptU2RTFmk8UrI5sY7aKkkE3Z/SRdEvErbDgF\r\nJjGQt75Cx5bVJO/y0fgWIcvaQJIlWRjLjwTcgcZ0OScy1+evpk5MDBFPs86M\r\nKIxheiBYTgetTsW2Zkh2gKUxe01Id+LZtLyGPmLz/W0ra6R9UzQ0qRTJBpjB\r\ne5z6TVZ1hKV5Cs4MAatZo7YaaCa7tdYbhp8+osEZ1yo2aZqcUw3YDOoD5J+m\r\nl9ascfNd4PvJXOTT7Hpx8YfDLPMjJnOFkv5m0sIPS06FHy2BzHwgagixaKfy\r\n8w+6Vu2L3quwZJrdP+t28MrI0n44JfRZeceTtpM2FzXAgXa1Iq1DdABybrB3\r\ngesRtBftV0SHA3yIR8pZT+HywUgfsN5wa2tgrMoPXl/ciPK3fL94k8mW0Ast\r\nXQIQeJzDr5tpdoQoiopghNVt7cSGkFqKadsULVoMBlleBYl0ywyrY6nEiS1Q\r\nR8vlD6dOlDZCZA6REm1FxbV2OEUhVM9eGI96MkKOidhUQY7NlzZThR8ivbQx\r\n3cUoBgLsZzlgrNbUuFJ/ozo5Y1kS1SErBtg=\r\n=ABuy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"9e7bc00e7490e659711476d50daf6fbf66b479f3","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.20.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.20.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-9e7bc00_1650534713197_0.14508261901541486","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-c43e2e4":{"name":"@team-plain/react-chat-ui","version":"4.1.1-c43e2e4","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-c43e2e4","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"73df1bd229f873cbe4a688f83e443d0a937d65a0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-c43e2e4.tgz","fileCount":64,"integrity":"sha512-HC9ZAuqJMhqweDFBinzTrZTw719wn/7mvlcFKGOpMiWKGirdTBYuJXTbikFdSbBT5v7ckCoKthdLeZqv74bW8w==","signatures":[{"sig":"MEYCIQCOKjLJ5TDi4mTbZlvyHbgftAL1llTmRgY2ziCniwqJNAIhAKD6cWwtoe1SIfApu9UMs12ntCIVyyqSropEIfxGwKAV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5149367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYokSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqC7g//bjYezPiVL4YZr2Gy2ehHk0/kdEp40bASaQxivlAP2Yz3xItn\r\nb+MWkSAJdoV2ILFzfmIWgbWj7GT1tj8FNrWaBj4ql505Q1Mj5lXyBM9HCKUW\r\nBbZM7Jm3yxAVYyPxccPaOVvRW1FsSu4mjfQKJxNtcyRodjM88MO7q29gL82s\r\nNzqsjdKscQ8Sbtx+B6BqTYU4kw2gkowWWCHtSEVLLCmMxgGpIzJAOStIF/Dg\r\nPnuh5wU0pXfSm14U1zDE8Z3c0qScGqLO8U+dcZHTqiHb912yxz8EKpdaizHY\r\nIg/uCWQ7F/6vZwrEo5Bt6rzUN8c1jddiUtD7ucPvPqGZJkKK/7CpgFdOnZGS\r\nIO9+FrkNRKnfol7ufQz9VmcpU2IQXjmDorKoTpuQd1E+frXWoiKkk4BdNgHd\r\n+vfpxiFjPmpHhzOKfepc5Bqdl182xd76ECSiMrwNhlCAimvblAP5bXWzHax3\r\nt5qTgN5VC9kF3SO5VTFs1m9aSFhF6+Eyqs10KOg6GzYsHqjd+SyzgV9iT8CQ\r\nihhYP11Zd4TJ7JYPS4HTxQjU/j49XS3XkHI/MHwY3U30WDKpaSyiFesDR5xh\r\n5WEqo3yyZH2VV9Hg4LN5+bPDGJ/WwgrWxcc3R+321e+xjqz7/hu0U7/3rt9p\r\n4hK8t/I/6E1nEEt2HKW8Kh+l+XtsBpBlJzs=\r\n=9+Hv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"c43e2e48a8ed74efd5bc74ca89e7bf5290fa0668","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.20.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.20.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-c43e2e4_1650624786399_0.26110035255632047","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1-c19f7ba":{"name":"@team-plain/react-chat-ui","version":"4.1.1-c19f7ba","license":"MIT","_id":"@team-plain/react-chat-ui@4.1.1-c19f7ba","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e7cc0b59df9326338473aedc5074c0a4e22478f4","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.1.1-c19f7ba.tgz","fileCount":64,"integrity":"sha512-yqPV6ildQIfg4j3wHffswzMydxJhzLR/QPSvQKxTnygyDecKMJZw7/yQdQDpbL3POumGjHIcmOC/QJ7ttu/+Jg==","signatures":[{"sig":"MEYCIQClYXIwR7kCBZcrCOTPLuLBsnezhmEWZkxkbZY/kJQ0ZQIhAOZxgfQb0EaD2TdaH30jfcjw/fEyOx4urr9E04/1UafH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5149367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYomeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkZA//VOeOotPn1e83Xk9/CCYTebKY5BjSM5x1eEWs6d/a5jqn3zZK\r\nusbgDRWzI6bwjLMwO0ExzIgH/TmEDMGy8Z8Me6bJvguhcHQgFJ7iwCqxS9xX\r\nGvInocyvveYj9fIwavFRyvcjTh7cSs+hgu3Ys+1cDMih+8L1NuGvMaY3xce9\r\nHcMtETYsGxiHwRXKS82np8PEejI4VB7eGhLBd/QsvdgL6Z+ANJtS52PfuS2Y\r\nMdR9Dprg/Yx+E+LC4B3Pl77otnM42m0HWfmZxfr4hnp8DummUwN29k5sNt0C\r\nrUDyb51GxXdQqFBwZstZ/m6ShfqW94TPQkprTWnb7z6ORx6//cKGs3jElDRx\r\nj7F4Zugep8lGtAnQ7yEJpYsIPCJ86+44JlNqoXLCtGKw7kl/lSktmCWlG7La\r\n6IQ2qli+JLeDf+/RxZH77bXVCn3M5JPo7CpnyHzjlpe4MgmGtZow1j6KPIam\r\nE+JYd4Nuqmczvffq1EOpQCgvwr+ih33yLu+KudBdurZmnwjqAbtDLRvD6HCm\r\nVN9C90sEr2UrbA+4lQbPfnGixB+GtdyH+yNfW+BrPzNA6Lu1tleFhgLEgFeP\r\nP+V+M5mX/K/UJenN9/fW4hJ1yYdGNsZIm8eFdaVQYn4gdzBK54YI7SodIlQS\r\n08XksU9ir7aiRPWackc7r1mE8A2TbU3Nfus=\r\n=/rAe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"c19f7ba823584038926e3bd0d9a2b57acb1afff1","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.20.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.20.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.1.1-c19f7ba_1650624926126_0.16868457558359506","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.0-71091f2":{"name":"@team-plain/react-chat-ui","version":"4.2.0-71091f2","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.0-71091f2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"26a54450734e6edb59a058b4214bae525b8e75c0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.0-71091f2.tgz","fileCount":64,"integrity":"sha512-nRKThAwjHVTIxPWYUPoCoZ/wYc1IwhM9T8vLk7cNvYDuuhaCIWl6lCCuT+c/B6quJ/F+nDca3rBUD77jrUxbqQ==","signatures":[{"sig":"MEYCIQDIeD0K08qgGZrQpaPcRt3UhVr4Aprxy7imd18/JliRhgIhALxHj0d3A2k+aTkbaH8BfAcM6NPGQdxDyO8EGNoSxf5X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5149544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYo46ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrv3Q/+NcCviMazEhsh+aXws8NEYOMqj66SJ7+1qw6qSVGHt+118MJ9\r\nNMp6U3vuamT7ztGTBZNkvjnmDKZ6SxJfwAvqIb1gJCs5WuFUBSqR0GMMpZWQ\r\ncyBFnEyC6UAhzzu5xt3rB3aX2fGYrlkNJkHOyTgOCgAzrrqur7qqRzbvjs00\r\nulUMPrI+fruhAijeZ0OdvKApyYkUzy8YjEs7pfn+Mg/cpJ39ySGWg6DxY/is\r\nTACUrdld6nUVZ4nW8l81tpzrSKTT3WZuW/ro7TIUhNM4aINLgBpR0RQeSCqS\r\nCE9WjBKnNLcSRW5EeWdWIjO4n7HG3gF3BVKQN4oOiFsQORjAetimELes/XgB\r\nfwctiwh5nedWOPIcFppioo6ThP2IPnlVcOuFqtVAxb+VouoOAeBOGHm0sK40\r\nyChZLC3kHqc/8uMIzLBAtfKQJxGI/pt4RtF+9TisQkAQuou75YnfK9WU33CU\r\n1MlBCWKka13THpHI2qWXyEXN5l8BUZjnuSYVfN2co0g1CY3WQiSgUnqIiBfE\r\n47AzNVnybXKZnAB3FT6SxRyDdV4zi3fnx79x4cEIzU0MKbLRQTQqIoDc5CUT\r\n6vpJctRT/c3hcNYCvLT4vHJmfVECpH5vtaeKiCcyD5O/pLi0yAHfAgqXgzF7\r\nIyUrCEUuuWvQS7VkS7cn0REuU7FvP4flew8=\r\n=gLrq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"71091f257ad1e82052ff9076fa7753f6c9cca84a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.20.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.20.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.0-71091f2_1650626105824_0.07075199282752176","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.0":{"name":"@team-plain/react-chat-ui","version":"4.2.0","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b37fdc79c2a44fd943962a487b77423798fd8530","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.0.tgz","fileCount":64,"integrity":"sha512-PdcQC2P7w6SlhYl2YII/oVwN3iclxnOOgZkBjb5RKa8Hb0Z0hvGkgs6N3EUOB3p64UlWwl/ProQvK3gMDCV7zA==","signatures":[{"sig":"MEQCIAZuZc0UU4KstlrTtQ0Z00lEqy5yPFq1Pr7g7xEphFMnAiBaUP+73kBcLmVQU1CMsM4c9LJxaIIgai/evuMKMl0hNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5149536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYo57ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/yA//VlBXfE5wfuGlZTSYEIbrgZAJHxE/iX9fAuqvXe255Ey3Ue0V\r\ncs604ymOMoi2KFee4CE+8KWsP+WvNvGq/4Ny5WJkbw2mD+c/kYsyqRV8OcPO\r\ncdoYHRJkurm3rDcSvb3wz4u2xJVayDQlomEH5bExJtFq4bhuLRKHqbDz9C4F\r\nHd1YhiVHAUFDiqMLFdOo2pTPoZbSmAn/XUt6P+7/v3/CI8zp+JBfyT/z6rpk\r\nBWHUxF8RZAuMsoyY7NAnpAPI1yN6u5c5pQr1XdC2uaWN4aeAT/5fEwR6RWO1\r\nDLytvQ4B27vSd79C+Qr2bVATagvdH2FBViZMl0PCk0ZTr005YApshWHNiewp\r\nPkd2Ns7lM4CVfM8QLu6EusQvsfOSoZmpV6o/Egwy+LUSlOPgYTugIbIAEvzO\r\ni0Mw8tvH1hVxdkUrLTg1VnGpEl/FXDzOhDIIxgpU4E5J9/nWRcDi/3rcI/YI\r\ngZtb/TuhVvp5z8jZfmpheCpR+O3H1RE7EA797GWOKSKzEyTe0mQRi+YNwWLy\r\nS/eEX2ef4F5iXeGWzAu7LA0aAk0AVFxdZoQMxUuKds49Wn/MgJ1ly16w1Eep\r\n0Ktd2eQxaScN4trcFZwDsNOfVrSy6SCziII6M3ysnZeLYNtMm+I3Fm/Qi+v4\r\nASNpFx8/b4sUTqjknBtzsqczR63+2sL6rQ0=\r\n=VYKi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"71091f257ad1e82052ff9076fa7753f6c9cca84a","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.26.1","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.8","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.3.0","graphql-ws":"5.7.0","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.5.1","tslib":"2.3.1","eslint":"8.13.0","rollup":"2.70.2","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"27.5.1","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.3","@types/jest":"27.4.1","@babel/parser":"7.17.9","pretty-format":"27.5.1","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"21.1.0","@typescript-eslint/parser":"5.20.0","eslint-plugin-react-hooks":"4.4.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.20.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.0_1650626171312_0.5411359216814005","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.0-ad16dbd":{"name":"@team-plain/react-chat-ui","version":"4.2.0-ad16dbd","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.0-ad16dbd","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"eea4d1bae8f5820c98b3149c1d1c6b4d42715a94","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.0-ad16dbd.tgz","fileCount":64,"integrity":"sha512-K3oK5cJGnj9gMTQNK6Xh7AX8kMsJ508LkMgjEFu0+8li1Pq2DHz98Ky+l5PrQsjYw883sK3uSKba/MnJRIT0fw==","signatures":[{"sig":"MEUCIBGghpoguSLNVzOPd9JmfI5Kr3yUaUrmI9o8DreU5jMpAiEAmIZzG9sbucHSA4KlgR4NhvzjyOnyQwkDkzN99cl99BA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5209259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidPHBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqn0xAAgzrVMdTy0eloeynmOIWZZ2EquZV8FAFfX7lL3HU791Qe9POD\r\nCMT5IuqCC3WQ0FzDbRj2n7dYk7IdkJipQPmD3zznHz63o3/QtQ9EZRad2mwi\r\nAsZbuj+nGvGpvi9iW7nD8xKxZNShnedumG/0lzdrZ6Tb9zln71rPG9Q9mbvl\r\nPuFsg59S+1Cl6SKpKgFQLkDccMBmsvI6yoA4fnFkbUP1WgL3pvrofwssUXp0\r\nMU7LF3RIeHhTH1VNhcm26RImOvfd9ou2b3wGeC0gUqsuDp/SZD/zh5y1dLU7\r\nu1La3PShCPxeLSjTYORfw1xxE7rGltOHRlC1vAmcr2FvRUqtqNEUDnTjZmEY\r\nZVk4l2BdIewecTvX/L+Lm/u7hcE4VjVPPo1SQ7CR6Wd9tqKoddjKAf9xFGgP\r\nW+pSoCJCrOWff3sprBmvaypBAqsApHNFBOp5Oxt2lnU4UusYQlbSGfMpOWGM\r\n9sdhGIOWsz8WG1zNnsfwyzukABi18LbvUqU5vt3b60CxV148bM2GGxyLbkia\r\noiwqNIOFUzrL0oyACj8i3HKxz6U1lhlI322CSAqa9cCJDuO8iKKN6lXsAwdb\r\n6YbyxZMCmJ3RWn0qmeZFBDo3+RT6/9IwH6R/+htj3sre/+eNNQNMvfh9zbZw\r\nxYD5WbFkQCTcuat1WjSArY1RwE+Nwtrv4Vk=\r\n=YvBy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"ad16dbd84f552935dc89ca1cd023cd69e2384a73","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.0-ad16dbd_1651831232943_0.4563792490185221","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.1-e9d156a":{"name":"@team-plain/react-chat-ui","version":"4.2.1-e9d156a","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.1-e9d156a","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"4ab4900355c8d22e9f4c6c25f2d84eb173f74a34","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.1-e9d156a.tgz","fileCount":64,"integrity":"sha512-qHs1No5ZwSIH4AJ93/xQ5+sXnxIK20L3KS1hZrZPdb/DekyM16VQTEDP/rig27mWEOstfmnonayLatT3kCH4lg==","signatures":[{"sig":"MEUCIQDQYfDp2XaYtKw2h11m5jr0WqazL3F9rA2x0RVZPX0zJAIgPipemYn3JA+Cps451/OgnonoXks6lrz1uURIHcD9b3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5211213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifk/VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Kw//QEG3Wdd7E9Hk+gQRueBOwt7IZ8urmGAJXzrQr02FEEhNd6Jq\r\n/8Vp7rQj4UlWcGvIpsOjsdreo+MwA8zIyNgmP6iJX2+wPgSU4JujlcbNWTKV\r\nEGS5jeiba1Df4zRX9caPD3iSinMmd/eAEvEJsUBo0r42O/CdkvUWujl84Ykp\r\nHMxdrL6CqSJlNRfmgX8XWIZ9/Ofva7B9rE9kzfW+9UNgc1blqnuxjs09Crqc\r\nRsWQC+DIzpTErdCUQZyWLKrDmxEy5NcarSV2uR9YSbszNZqLMkaZndjwWjoV\r\n3V6hdizHO4y1LI6aKf4/V+/G2UvGUMYJ6+FnqTFSqIpbtY8O6eVyyl46VvWp\r\nD+kPlnq9aYva31cF9xABHJW2PeAFhaddmRtvfAot9NXXzbuNO+7GPHkJuQRx\r\nLksgRlU+49aLbRnESdLmPWNADUQV0XdJIGcZxiFCiX7ahC2vBW9dA4/h74vI\r\npwJECvQg5WCy4K269fYD2dx1wKSj3oo5hcc5ue1DAu/hm28W+lycQqiZZ+XI\r\n78Wz2K47Yjdwsp6Xbf1nSfrWmDvVg7iNe4WUgGfUpsdYvrfcf74PPusKhG70\r\n82R6pZYeiPrpZAttX8FwogdkVoPqQhDRnn5M9c/Q1GRApXEFwXt/QVAlXnOd\r\nkG8HLZ6JYcNdvg08dDeQQeStrtxzOKxAnWY=\r\n=uF99\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"e9d156afab95168f632d1c4e3df1cc20cd153dbc","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.1-e9d156a_1652445140820_0.303611749746308","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.1":{"name":"@team-plain/react-chat-ui","version":"4.2.1","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"a059b9dade70f9070809d7e07f9768283ad290db","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.1.tgz","fileCount":64,"integrity":"sha512-j+bkGl0nGD955s0NChv/uOsw32sZ/i6bCtJe2WYHN1Ur7TQqgnOSu6lbcW+fPrCfI0k/GeV7TRAdYeI7QugLJw==","signatures":[{"sig":"MEYCIQC0csvH2RWbU7BLodSHMooT40lt5vzh9afFTExl/LlfLgIhAMs929FLEJNXRszRPpWHFWZUFu/SdyBApYl7XDAoSzun","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5211205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiflAGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCcw/8CGZotzNZkd7imU1DsLE/KZhHJ1BVE/P9PtDtD8+c8TBN1b/h\r\nAYtvhKAJzMQORkPf7C7ZdnKB305LgADCTqZ70X58kTuVTeEgO8V9IBEMLXda\r\n0g6IGJYyhNRtjbZhqGDc4M4Nyr019NiYD5r91/lzMwesNEu3Ong8Bhh3qEZ4\r\n/NPu5jIENTlwPUO1uj0UpWBBwM8d2y3p8HxocTKZV2qKZIGFCi8nAgys1APA\r\nyCE+GD1I8jh9cU9RpVH+VH+D+uQa2fmiFfZq5lKSV3+FlkFn8oqp5CfQUwrd\r\n3QMglAIALPZFs8YSbDSK9Jh5UNzPZO5POJ6bggEOdARP5SAXXTzB1F58P795\r\ngJ5b2ViFwNHe/MDkqmgAvt/4fBeRnvKMrklUVuaOFyJ4CvbPm7gSB8DkelCn\r\n6X4B5qrxcy2qWdXj15pPiv3hkYflLYRHZ2GI6DEaSCpr5qJ+CQVl08y0WSjx\r\nFGSmzYvgdXf14PanLjhWpCEAP4eKTDNBuSLVUrnbhC92Nw5NKwiiH+B1wSH8\r\nLSbvU510s2pHSNlIM54GHuHXF75X5Qu21g/rajIo1WjmuRrYAfp59F2rTr6N\r\nkV1QD6Lu23tJWOXzJ/j+nPZw/vv+f0UeZe481zJHGv5y4W3WPSlc5RWL6Zh7\r\nDmdE1T3p0SlbES2jnWteO1MjJUZ6U4zr3Ys=\r\n=YOYG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"e9d156afab95168f632d1c4e3df1cc20cd153dbc","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.1_1652445189848_0.28844393557649917","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.1-bb87d95":{"name":"@team-plain/react-chat-ui","version":"4.2.1-bb87d95","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.1-bb87d95","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"6dd67e6badb5996734a3a1693fe55129299f204e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.1-bb87d95.tgz","fileCount":64,"integrity":"sha512-0auBbNUgTRYtLAcOx3Mzn8cB9S4Aw0KuzKK464ZhecU6jQNAyDAG5LKtN4u65sV5crb4H/g3MqP6B4Tofs9P+Q==","signatures":[{"sig":"MEQCIEYWcuYCcYTx96UHuSNODNe0Cmoel9G1GkMSgNwEmMnWAiAomYWxc6Rt50+qMwQLuHJDOxf2lyp6xuqj1v7jBkddKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5229112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiowFEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpavQ/+LziPccMc6KSvlSUzbdKTjk4ASBv79FxMgm9zVq7E1bdHpaML\r\nDC5kvXMLMVB6aMkjBTr2cwKZGAE3WRlrjp/ck5sEAZ8HHDa5wo/zcG1o0634\r\nmXItEJyCUqXVxEjC5yVvHvz0tA7WtZgRW+qY51dMcZiKWHB66hB9XTO2wib1\r\naqQlEhxfNOKZV2f5n7Ou7NacHFZEGkG5XqSq4tqgmalPYc6fnJ42bo6rVOlu\r\nkqIwlfLaYc1EZ6n5zaqs73yOK5XSHPxe1pINApKf3PCb00B1JBeF2zbU4EvB\r\nQCe2RlZZCN5w047AwVaELSMUUGJsOWH8+ywg88d6YVKL6XUVNmwA2yCCbo02\r\nQuqxSgME0335NnXzPW8P1hSTqTJJdvlkVYn97QFiEOslTDy4Zmh8O0VgTn16\r\nubwdMxHCatmxC7iiNxQ7r1pz7E8RenTvWcJquE688U003d0pXWs+7CMIkXjm\r\n3MLmPIDhekJ7G0VyKUJoEE8XAzzo3Oy91St4bcdkQWxovC/pY2a6SFyPd4XJ\r\nzhXqQr/u7yjMytPe03hemImGyYDNlbvuT9Cj7YB3li4e6hdEfMJK30rgF25r\r\nfBYUEYmT4pAR+oPPDENxCuOw2hy5eI0JB2dHrQ4te0CpfBcrogwNl3Dk3mRx\r\nof3f7QbHtUaOmXUPnRBZ//7WIPgmpwNzd8I=\r\n=51zQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"bb87d950d0d95d8c1662368c78da80795f28e711","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.1-bb87d95_1654849860219_0.42275127460531237","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.2-2963f14":{"name":"@team-plain/react-chat-ui","version":"4.2.2-2963f14","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.2-2963f14","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"e443a501248b9711a9ceb955d149d073ce8abee5","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.2-2963f14.tgz","fileCount":64,"integrity":"sha512-ZaoEAoJlSUGA8oua4dXmjmrn1dc8ol6HEMkVYHDFi1XfOHneeGjRgpBNmAKD15OptD+DTpEA8JqWJaTUJdq2+A==","signatures":[{"sig":"MEYCIQCnLCDbTDpOQY96Oh9b0CDDdK1Gc+h3AJ7Lnm7Zg3es6QIhAK4ZBGuguBi0rhN5lTrUEzZeB1bKOf6xcIe4rSmCLwLB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5229255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioxwrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCwQ/+PqkpUAffbgwLJOc/Yc1ek195UUI/gjrO+Z9CbEhzWgm4SZIJ\r\nhOGXxHPXyGIUsy3bqxBgwch1uTA5lciIbvUFlx1KjlLjdZkLSnzsXm6emI1j\r\n7nomAtW1VUEeIAvwAN8bkY4PDfeNkkWyB+igMewafFA7cXUNDTjKPFM2Z+rO\r\nCawa77mILNIpNBtME5oTKqdpfKsZ4YOFaf3O0N4GUgaRTO6K7SwJZYDMGD4y\r\n6fwz+weYcL515oXVukiD59Dptkf38CZ9tpgH658N3Bgj7P7HoyOPT2SOY9zX\r\nd/HpuSTWB/2NlHIHcjfZ6QISr+ktlfy5P4DWVDv5IDba0r1YbvqpAnT3nfji\r\nfTSa93IXNrrQDkXCN2OfbMEHgcN0K+MbzUaQGXMfmep57FJ9GPDcbIMr8V+V\r\nP8ZtKs1kXTosuGaxGeQsoePF6VADMVoEtKj/hBEGGXDm6+34DKxKUM5NW9z0\r\nG42Ti0GW2kAYhX/gfnNMSGrS5aZzK7L9qBNhDKL06Az1SXvNx5yvXq0t214J\r\n6wJZXa4wQ0SO66t+udZpOsF7uELeXk0M5MvpDY+G/02r8M63pZUKyAIVrdGk\r\nt2uCkLSLL86T7aUc5PPHTldJFYTRC6uUuS1stUalqmhJzqUJvTDWmcPvjBRC\r\nmajg3WYqdh3p56wRH6Z2mj7LI9sATu6G3Ng=\r\n=Bt8y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"2963f147c5570d3ea7a8afc13abd17751b4762cb","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.2-2963f14_1654856747283_0.1988599696460973","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.2":{"name":"@team-plain/react-chat-ui","version":"4.2.2","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.2","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"a4dbb1f31ff51afbcb6e0effbc9d1017976dc449","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.2.tgz","fileCount":64,"integrity":"sha512-h8IpfgzXKhw3YOFyad2C9t/SQ33+5zdtfoXG/D+DlPDUxgA9jJK5xfaM7hW8Rcm2nc37Lfr2MbG5a4oU5aet3g==","signatures":[{"sig":"MEYCIQCQW5m6UjI6KTo6pH/lYLrYQXQwpLm3cCK2M//8+CGkXQIhAM4rvMWV5PEHrwfHyekAAcpiuEA/ehY9vmsNRm9z8w6/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5229247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioxxdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrT8g/+OKMW0D9w0Xq07lA/zhhqzUW138aF/jLtfmorngx4jLdH1tt9\r\nAYJPfQfvbIYIB+rdhbKO+TtNMV2G+nOkkBrF5WjMCRusjoFDUa6S/m4DiKvR\r\nV3kZ2WY+qS6P/NPBAjmXfw7WSj50z1HiEvFe6zwbc4mbwFvOUY0rxuZ7e1CG\r\neBAxEKxAPYHfWMqemo4H3CLfd2M5iFiXEDcHsm2dWu7yjUBGqlQc2Ydjm6j6\r\n1DCvy4Ehmw6xkiaAXC6fbh9Vcl7QbMV3OdcmkBH3MDcDFGb7Ks65QTuqheDP\r\nVFrR/eA5xu1cYS/IOhDFhtr9/vZUxYkzvQwoZJCWXGWR5ebi9ajLUM7+wSF2\r\nXqh3GL/fC60BtPzon51IQF3/C+G18yxfA0aHxdQ08MdctSIna50+BguVqHLB\r\nIELRNkdqYZ/J7Ph9spQKDtdiNPBgsnCFV6j8x0SbSQWZPXrOEA80ItWibN6k\r\nkF4p4x4K59vA6ZyjBlCdTqVJFHZhr6yIWAPbhFO7JL7DonOq5EB41QYnbWm7\r\nM0B8aa7Bxn/fvrVnP3032EN6FNQ26wYxEkAy5etJk4Y1DwosqJ7wwYxv0qFF\r\nghq4adW3WnuFRVmN3dhXqgGXpRYH0XoNtm8JilzLaCBt9DKE2vmgAepfKU5G\r\neKSiauAkkAI0rWw63GDkyMxKZCcauAhjEI8=\r\n=DoC1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"2963f147c5570d3ea7a8afc13abd17751b4762cb","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.2_1654856797320_0.18215301874066547","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.3-2ed5272":{"name":"@team-plain/react-chat-ui","version":"4.2.3-2ed5272","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.3-2ed5272","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0771b6c7b235d7672c28fbc35c47edce0071c181","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.3-2ed5272.tgz","fileCount":64,"integrity":"sha512-1ai+OrlaNAA2a5Zh5aIS2AzrqK2jJ9kemt9fjzQSI8LLclSTjp2Wcwnd5oWYTPXU5RmM1+4xifiJTerVmVg/5A==","signatures":[{"sig":"MEUCIQCzwigNtC7gbemyyJuKYJF5fGBcSqkunZI6wGWU4WpSrQIgCqwVtYf6Kqx/Tk8j0OijhFbHLTwIp/szR+XmhKqETRg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5229422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi17fqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoiWg//ZkWYapXE27C1SIKXfZidsriFBm6hBNgy/MQX5a023DoTSvXt\r\nO4nWAiy+sxdLA2Tc35NfbDjeojjfUKweiTG+mNBKVIx17T72QjDXfb6y7CHb\r\n79iGPlI20jFXGu2YRkrLTG0EDnkcxM2SkQmNX/8nhL0YD6hg8FJNXAD9Lt2i\r\n12sQYZwPbiqSunvBWIO9DqpN2dFz2A1bntNgQ3k4dM/eOTLId3yv3bhkqYux\r\naGePiSGW/qkGsQIslONAn0aC9z+S5rtJWNVCwpgYNb2nEeh3t+oZCE9Kd9h2\r\nGzN44GYZdzNWHKHiYxxtSCM6J/GTJd4zPPu7wUlV/QbGeUoUHRgPr6ah/e3y\r\nJFCLzunixca1mThiJWz+l1P8nRgyVZFB71cVirYN+hEPynmWzE2qk/AeKbTW\r\nnlUwJeMYS+Q5Hv7WlF3YEydGvqdvxY6m2NeQubwbgC9JqtF5q4cD9UohqUPB\r\nrfwOjngakcsUStGJTGBZbqnpgDM5BgFG25Emf1tIFYNBtzplro4HHoNENOqv\r\nIYXzyoUOy5grHGy1OU91GLTO7AKD6w0bk9bmGhtHPCOahbaIN4jVEFuwm/Ex\r\nz1ZEAgvLB7g2HS9BMyKK6tgMOjtboQdQm1jJJmU7ccDYduxToTEXmYtoHHAP\r\nwLotQUXEZ+FqPk6fTG3EIVQIjXwxuD0e/eg=\r\n=t8j0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","readme":"# Plain - React Chat UI\n\nThis guide will take you through the process of adding the Plain chat widget to your website using our React Chat UI package.\n\nThis guide assumes that:\n\n- Your website is built in React.\n- You’re part of the early access programme for Plain.\n- You have up to three types of people contacting you:\n    - Visitors who are simply browsing your site/app and do not have an account with you\n    - Logged out customers, who have an account with you, but are not logged in at the point of contacting you\n    - Logged in customers who have an account with you and are logged in at the point of contacting you\n\nNote: To increase security, reduce spam, ensure you can follow up with people and help you avoid duplicate threads, Plain asks visitors and logged out customers to enter their email address and verify it with a verification code before chatting to you.\n\n**The first part** of the guide covers a simple setup that will provide support for visitors and logged out customers.\n\n**The second part** of the guide covers an advanced setup that lets you provide support for logged in customers.\n\nIf you run into any issues, let us know at help@plain.com. During GMT business hours you can expect a reply within the hour.\n<br /><br />\n\n## Simple setup:  Visitors and logged out customers\n  \n<br />\n\n### **Step 1: Create a Workspace App**\n\nFirst, let’s create a workspace app in Plain. Creating a workspace app will give you an `appKey` which is needed when setting up the React Chat UI.\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-nav.png\" alt=\"Screenshot of workspace app navigation\" width=\"300\"/>\n\nTo create a workspace app, log in into the Plain App at [https://app.plain.com](https://app.plain.com/).\n\nSelect your workspace, then navigate to **Apps** from the top left menu. There, you’ll see a button called **New App**. You’ll be prompted to give it a name for easy reference later.\n\nOnce done, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-1.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\nFor the next step, you’ll need your `appKey` you can see at the top of the page.\n\n<br />\n\n### Step 2: Set up the Plain React Chat UI:\n\nInstall this package:\n\n`npm install @team-plain/react-chat-ui`  \n\nThis package exports two components:\n\n- `PlainProvider` which provides context for the Chat component and `usePlain` hook.\n- `Chat` which renders the Plain chat.\n\nNow, import `PlainProvider` and wrap your app with the provider. \n\nYou can now use the `Chat` component wherever you want to show the Plain chat widget.\n\nA basic example would look like this:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\">\n      <h1>Your app</h1>\n      <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe PlainProvider takes your `appKey` from the app you previously created. The `appKey` is a unique ID that Plain uses to know which workspace app you are setting up chat for. To find the `appKey`, go to the workspace app you created in **Step 1** and copy it. It should look something like this: `appKey_uk_01FTGG89Q8N0HBN3572CRN1F2T`\n\nIf you load your app now, you’ll be able to chat using the `<Chat />` component and see customer responses show up under **Waiting for Help** in your workspace at [app.plain.com](https://app.plain.com). 🎉\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\nYou are now ready to help logged out customers using Plain.\n\nTo set up support for logged in customers, read on.\n\n<br /><br />\n\n---\n\n<br />\n\n## Advanced setup: Logged in customers\n\n<br />\n\nThis assumes you’ve set up support for visitors and logged out customers, and have a working chat implementation for logged out customers.\n\n<br />\n\n### **Step 1: Create a private/public key pair**\n\nFor greater security, Plain uses an RSA key pair to verify that all customer details you provide are genuine. You should never share this key with Plain or anyone else, and we will never ask for it.\n\nIf you are using macOS, you can generate a private/public key by running this script:\n\n```bash\nbash <(curl -fsSL https://raw.githubusercontent.com/team-plain/generate-rsa-key-script/main/generate_rsa_key_pairs.sh)\n```\n\nFind more details here: https://github.com/team-plain/generate-rsa-key-script\n\nIf you use Linux or Windows, please let us know and we can help work out equivalent commands/instructions.\n\nOnce you’ve followed all the instructions from the script, you will have generated a private/public key pair compatible with Plain. \n\n<br />\n\n### **Step 2: Add public key to Plain**\n\nNavigate to the app you previously created under Settings on [app.plain.com](https://app.plain.com).\n\nClick on **New public key** and paste the entire contents of `plain.key.pub` we generated above (including `---BEGINS..` )\n\nOnce you are done it, you should see something like this:\n\n<img src=\"https://www.plain.com/react-chat-ui-images/readme-screenshot-workspace-app-2.png\" alt=\"Screenshot of workspace app settings page\" width=\"100%\"/>\n\n<br />\n\n### Step 3: Set up the Plain React Chat UI:\n\nNow, let’s set up the React Chat UI with logged in customers.\n\nBesides the prop `appKey`, the `PlainProvider` also takes a prop called `customer`.\n\nThe `customer` prop can be used to specify the current customer, and show them the correct conversations with you.\n\nTo specify the logged in customer you have to provide the following customer prop to the `PlainProvider`:\n\n```tsx\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n    // more on this below! keep reading.\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nThe `getCustomerJwt` function will be called in order to get the details of the currently logged in customer from your website or app.\n\nThe function you provide must return a [JWT](https://jwt.io/introduction). The JWT should include the customer details, which are signed with the private key we created previously.\n\nHow you sign a JWT in your backend depends on the programming language you use in your backend.\n\nHere’s an example using Node:\n\n```tsx\nimport jwt from \"jsonwebtoken\";\n\nconst customer = {\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n};\n\nconst token = jwt.sign(customer, process.env.PRIVATE_KEY, {\n  algorithm: \"RS256\",\n  expiresIn: \"1h\"\n});\n\nconsole.log(token);\n```\n\nYou can find a similar library for any language on [https://jwt.io/libraries](https://jwt.io/libraries)\n\nLet’s take a look at the customer object more closely:\n\n```tsx\n{\n  fullName: \"Garnett Hermann\",\n  shortName: \"Garnett\", \n  email: { email: \"garnett.hermann@aol.com\", isVerified: false },\n  externalId: \"your_id\",\n}\n```\n\nThe customer in the JWT has the following fields:\n\n- `fullName` (string): The full name of the customer.\n- `shortName` (string, optional): Typically the first name of the customer\n- `email`\n    - `email` (string): Their email address\n    - `isVerified` (boolean): Whether or not you have already established that the user has access to the email address they’ve provided you; for example if they’ve already verified their email on your app or website. \n- `externalId` (string): Your customer’s id in your own systems. If provided, this is what is used to identify customers. If Plain receives a customer with the same `externalId` as one we’ve seen before, we’ll update any details that have changed. If not, we’ll create a new customer.\n\nYour frontend will need to be able to access this token. How you do this is up to you. You could embed it into the page or expose it via your API, as long as the token is signed by your backend and you **never expose your private key**.\n\nAssuming you’ve chosen to expose the token via your customer API, the example then becomes:\n\n```diff\nimport React from 'react';\nimport { PlainProvider, Chat } from '@team-plain/react-chat-ui';\n\nconst customer = {\n\ttype: 'logged-in',\n\tgetCustomerJwt: () => {\n+\t  /**\n+\t   * EXAMPLE CODE:\n+\t   */\n+\t  return fetch('/your-api/customer')\n+              .then(res => res.json())\n+              .then(res.plain_customer_jwt);\n  }\n}\n\nfunction App () {\n  return (\n    <PlainProvider appKey=\"YOUR_APP_KEY\" customer={customer}>\n        <h1>Your app</h1>\n\t    <Chat />\n    </PlainProvider>\n  );\n}\n\nReactDOM.render(<App />);\n```\n\nIf you now load your app you should be able to chat in the `<Chat />` component and see customer messages show up in [app.plain.com](https://app.plain.com)  🎉\n\nWhen the user logs out it’s important you also log them out of Plain. You can do this using our `usePlain` hook:\n\n```tsx\nconst { logout } = usePlain();\n\n<button onClick={logout}>\n  Logout\n</button>\n```\n\nIf you have any problems, please get in touch with us by email on help@plain.com and we’ll be happy to help.\n\n<br /><br />\n\n---\n\n<br />\n\n# Plain Provider Props\n\n<br />\n\n### appKey\n\n*Type: string, required*\n\nThis is used to specify which workspace app you want to use for your integration. You can find the `appKey` on the workspace app page in your settings in [app.plain.com](https://app.plain.com)\n\n<br />\n\n### customer\n\n*Type: Union, optional*\n\nThis is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged out customer you can provide an object which matches this type. If the customer prop is not provided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. See instructions above!\n\n<br />\n\n### theme\n\n*Type: Object, optional*\n\nGuide coming soon! If you are interested in theming the React Chat UI to match your app please get in touch at help@plain.com and we can help you.\n<br /><br />\n\n# Hooks\n\n<br />\n\n## usePlain()\n\nThis hook can be used anywhere within the PlainProvider. It returns:\n\n- `logout` : A function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount` : A number which is the current # of unread messages a customer has. You can use this to render custom badges and such.","gitHead":"2ed527212f810f572909acce6f6fc2c32536189e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.3-2ed5272_1658304489102_0.7055791864401388","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.3":{"name":"@team-plain/react-chat-ui","version":"4.2.3","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.3","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"7af1aa1466daaf2c75dff6e31976b989ae98d25c","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.3.tgz","fileCount":64,"integrity":"sha512-fu9rDouJbpBYjn8nv3zqvgYh/Ggy3P2jAz5Toy6Y1i3E0/TVAKboAiFTVkLRAE2KGC90Xi0aSr2eGpw056iBVA==","signatures":[{"sig":"MEQCIEvK/Ib6iZdFJFRftWJMCC0zQIS2k17GGrZFkNW1gPjpAiBAARPaG14PCXemIHp08lH/pSLOYwWcynd2EIUm2dq8iA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5229414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi17gdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmriCRAAoVU5JSOg1NqiehY4WklH4nNZpLJRDMJWCokOC3I/EWm7XB7k\r\nPQXz84axUEEDgSpwgV/Q4VCiUr9A3MtcSddqoP94tzJaZ2LIMB+4OwcUVl4o\r\ncrpsmvf4xeF4LLhcwQdYP06i00dgHji1uqe+8yZrShoD/EaKGJkW3RdvEe4m\r\n6fnASIVvMV0gtGy4j37eF3HJFRjGxaamrJxfxifEgCnkZJzhUWXw1hs8+jH4\r\n6bVS54HxnReS+olU8J67epP5VGqWnluJnAcAb98oaIpUgoiexDA8z/CD387M\r\n8jT+0I4Rd5V90g1i4A+fMhHGonjsEOHs+b0dAFrroEGJcnMTSrNz3zQ8su+9\r\nKt9n7g0Gb/1Qw6yZBuew3GQHYGY7VJNsjcBzInzg1aGbo74Jq9eFHO0/Rbd/\r\n4D8KrnOrTcy95x8RtaVgaZiCEt/KhvK1isV6c56mL5xCkClV28SVd21wG/y7\r\n2MVuyK4KBwLCtepxy0phVcgJ4xi0ujX7JPlbKpoQiWbrGXbtqyC9QZX1E3JI\r\nh1PjU3jydWewWNHJuFgV4EaXcyRs/o6fePu8Yv4TuRlWjHIve6n0C3fPNWGh\r\n5KFwbURlC9TRxLp3TglFi04Mfq4TJjrPh4HClyOiCrv2Kb8fi2C4Ou6K4v5Z\r\n1dUoFFwM6BqdJ9SZ25nWncJ4ifjrJB1M2mM=\r\n=wcEn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.es.js","gitHead":"2ed527212f810f572909acce6f6fc2c32536189e","scripts":{"lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","lint:ci":"eslint . -c .eslintrc.ci.js --ext .tsx --ext .ts","lint:fix":"npm run lint:ci -- --fix","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"6.14.15","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"14.17.6","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","@types/node":"16.10.3","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@types/luxon":"2.3.1","@types/react":"17.0.43","@types/lodash":"4.14.182","@reduxjs/toolkit":"1.8.1","@types/react-dom":"18.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","eslint":"8.14.0","rollup":"2.71.1","ts-jest":"27.1.4","prettier":"2.6.2","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@babel/parser":"7.17.10","pretty-format":"28.0.2","eslint-plugin-react":"7.29.4","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-plugin-import":"2.26.0","eslint-plugin-unicorn":"42.0.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.0.0","@rollup/plugin-commonjs":"22.0.0","@typescript-eslint/parser":"5.21.0","eslint-plugin-react-hooks":"4.5.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","eslint-plugin-unused-imports":"2.0.0","@typescript-eslint/eslint-plugin":"5.21.0","eslint-plugin-simple-import-sort":"7.0.0","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.3_1658304541004_0.7394026921971639","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.4":{"name":"@team-plain/react-chat-ui","version":"4.2.4","license":"MIT","_id":"@team-plain/react-chat-ui@4.2.4","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"3fe1f4f2659f91b1e3f0f9d0716e1b264a6e4ce4","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-4.2.4.tgz","fileCount":120,"integrity":"sha512-256IqzgK0LVHbPGwMcLxJgT/9q90QwMSDw7d9c6FNhWnt8UpinkcwtcxrUmqbnMPgSvdQMOhO/9IC/YyQbuSbA==","signatures":[{"sig":"MEUCIQD2OL39HFEPovSMObCJdJVWkZwR3u1+IXgTSbluVKAT/wIge7a68Y/44rIZJiMkFWYUQz6tIU2n0xwrNuUaAa4Whs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5275640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3qjeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopqA//XzTzm+hyNZjt76cVpHQb8zjUJgo/VSYOjm0hWOTSvuFbOv31\r\nIEleizo8EnUpfNr9PNgVDOzCEQMo4A9IvpR1sSHzc98Onntz0mzuKcIBIn3P\r\n4qBcfwhjroz1V99dil8Mr+KX/EDhXPMa8ZTbbzawlmr470Vbmj5AD/PCVoHh\r\n6nNY4iA6Q4MdhqRNvhFXceAdLf146XhYhThyGIVEcITh8JL9fPfUAWKMFUzJ\r\nhfiuh7+jBcXX//jPcUQ+a5IqkAlrSKwwR8ovrBxt/m0aL+tXoXNJ15NIm7Vl\r\nCnmXd8JUp14Qg3tOgyHCH3WmspMBg0Tt9XypVna5CCPvjrSgEp3ayW0s8TSd\r\nO9dDs4cHiuezSqUzJ3OaOG/klmtkWRmKPjYOcz4UfzqqhOPcZbCAWgkrgJ/o\r\nZFAtN2/zd1Rc8d+agsi6YolXB5WjawdkIBgHslqIbtGE9YAL/r+crLMJXWc7\r\nRVvGbxwpl4m+bMkSmEYuMC4J+rlUwwJV4hfoobqHaeXlSqyq4OosGkj9UG9j\r\nc48FiPhJt1HsvkcrGxsDk/7lJ2OnJQ5tWmHqwrjunThjp9EvCgaPQDtX4exf\r\nGJ9RO39268hjNu7hcWPID9rrLefD0bFZXkflUsONFtMaVT7cRnTg8tS2dI/9\r\nrxf4jgdrEMyCEhBect+Jz0nhhbLOf2+UMFg=\r\n=ECXv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-4.2.4.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/4352cce3d6063910d9d2ecf967ef8481/team-plain-react-chat-ui-4.2.4.tgz","_integrity":"sha512-256IqzgK0LVHbPGwMcLxJgT/9q90QwMSDw7d9c6FNhWnt8UpinkcwtcxrUmqbnMPgSvdQMOhO/9IC/YyQbuSbA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.6.4","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_4.2.4_1658759389872_0.5942678976671092","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.0":{"name":"@team-plain/react-chat-ui","version":"5.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@5.0.0","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ceb0420eb9678c9395259572fcb97660bbf63212","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-5.0.0.tgz","fileCount":136,"integrity":"sha512-qrwuYVpEiD0+7h9hybGkeREjpV4BaYCmeo34GI//3UCIzZDoqAGvxIc2Dgxu38HOWhHtv1cPck2p+M02NFQrtw==","signatures":[{"sig":"MEUCIHvgmJPHZyJ4AkGFSvIafvVkPOR//nPVJuPTaop3EH7nAiEAxx2SpIeJgw3kWgn0O6o5odzwEk9olHh8+ukjQXhk9Jc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6316571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6RcqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLTQ//S9i2hU26LWR2nFma3+lLoslTMnsIgKPgtXY07suTP19vvCOQ\r\npILEaseBL8ypb0Ao4/fT3k8MAzEzIqmmvjjPUu2Wuq+GXtjRCHnGAVO8RA5Q\r\nvUBR7AgqPOKxh8gAJFlbd2ZA/2teNw/QTTFPLJg/Y90wR/LCOe3LrlLIcCHz\r\nsC0befvEb/bKXQTb33F4YcnK7voSp9tAoWIVmu0HvW2bxPZqfXSv2TzmqEEb\r\n1uqpy0IaQM3LevlsMYw+8p4YdebPLwxHsuLvEpzJpY1BawnzeHnd4fou2YFU\r\ntWXoy520Bxa86ogSooSNJo63Fw4KLjJrSsg7Jtcw9aa3y3cS7IcEAllIH1t2\r\nQKXHi1l+YMFeDCkXDHNG8dqOcTFuohKB7ungTBDuJBTCQbnljN7Cy1Obt8+i\r\noLSRuLGOKi47WTxX9peKsfBJS+187vpOgjdfxfPGxU35unoZLqtM6uG16ed9\r\nhlkuufUrqw6iTqBdLeBr67Mi+eafyXcg5IJNZH5a2roXoAg/pjWbp3l0smlV\r\nlWKB561XmzwB/1Fm3EJn09BBQGWKu2MRJlpw6BQOORlhRPSJXM4jiGbAwsxI\r\nIJMa5xLW6DUsv/QgHaDdAopgA3weJkHF1T5MuIxNvAVu5Fapjnf2ObNMxARA\r\nQfyZsUWwiXWoZCt6yNwAG6RzdO8+fcRsByw=\r\n=C8iQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-5.0.0.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/3615a0713fec5b5d9b735f4dc6e27a2f/team-plain-react-chat-ui-5.0.0.tgz","_integrity":"sha512-qrwuYVpEiD0+7h9hybGkeREjpV4BaYCmeo34GI//3UCIzZDoqAGvxIc2Dgxu38HOWhHtv1cPck2p+M02NFQrtw==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_5.0.0_1659442985736_0.11209962525352202","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.1":{"name":"@team-plain/react-chat-ui","version":"5.0.1","license":"MIT","_id":"@team-plain/react-chat-ui@5.0.1","maintainers":[{"name":"team-plain-bot","email":"npm-admin@plain.com"},{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"198730ba89fb7b2df058c8941b5e8ed98f1cb0e8","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-5.0.1.tgz","fileCount":150,"integrity":"sha512-u2PW+igfKwNrAJ7ta78QTBjgyARoFS/Zw0I+vbc14qd3eS6AHuYSCYkTzuRhAMSkINxpkVceVXF6lRxlA39/XA==","signatures":[{"sig":"MEYCIQCGmho1jYLuXroHJTXJxTfddEQuxOPnGy9lAyS8Z8FuJgIhALXcA0U7yz36F/BilX1KCr9JfvcYncJaTO7CXZEmJDew","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6330629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6kyzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrPSQ/+JC9YNtXQO4rOoFftkC15H0rjBIPSFZQ4AeqcWRluovBI9csP\r\nv8FDqhAGJSAKOduAxuMOlSGuz7kkb3gCRmR+yflSVR/St4ij+Q54LQgbCita\r\n/wmIplHTPb5RQ/4r3AQE1l6xastdIk36BGn3pqxwYj3badtE6VHfTtB0vMZ7\r\nKjGZNRyOlZROoeeIT6GgPHupX2As/3Rtjg1285AZQn2Mkmn8K5ZgMydey+Zl\r\n7hdWiju+ZDUcD6b/E3BhqhcU6YQmONI3cZFNcoUVseLjCd3ORTzZo75ZqQr9\r\n58kKAhgWQrZBiPpyGt30DkCopKe7RawX6VzV95pR+uvaC1yJxBpQjFxgiDSG\r\nIjY0fN9Vr4ahI0PCVvCa/WNmA+DMxSLIJ/SS7tPajYkZ/ncB+VsE1spuxiEm\r\n3QccrOrmUThZ89qb7W0gWSyEQI5hIIpfwQYGXUDy2If/UOAyQXLht5b6BwQ6\r\nVL+BdgWTzceWZsq0iQ/4LFazGakMjkeq7merb8uvN4/yfjtwv9HqJ7XDEJML\r\nb5Dxafbs55pm0sRXCQCrDL6Em7L5VhwcYU/2TlR3FwXhuFmVCTRAw2AjhY+g\r\nJ8AYnQueGLj4BTOL6Hqlwx4YAUwPGop95pJ/rq1uX/IWIVAtivlC1HWkl8uc\r\nFTkEfJzWymq+yvWdyaSzmQQRh+K5j4dB1MY=\r\n=dype\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-5.0.1.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/b63f0cdc75ebdaf42ec36da8b897e045/team-plain-react-chat-ui-5.0.1.tgz","_integrity":"sha512-u2PW+igfKwNrAJ7ta78QTBjgyARoFS/Zw0I+vbc14qd3eS6AHuYSCYkTzuRhAMSkINxpkVceVXF6lRxlA39/XA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_5.0.1_1659522226799_0.18393342127981205","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.2":{"name":"@team-plain/react-chat-ui","version":"5.0.2","license":"MIT","_id":"@team-plain/react-chat-ui@5.0.2","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8c528ce9f7edf40e4f96940c2ccbbc3579d3a497","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-5.0.2.tgz","fileCount":150,"integrity":"sha512-7LTPZ26BCJ4bAke6VlpYHkB1YqNgqAhP/cv4R1ZOYdl0/DDsX018OGv/bl5FQ4lZiFECmHrBVjurHncP1dBRXg==","signatures":[{"sig":"MEYCIQDfSG4Mb2G6gsVMGrWIYxl9hxH7yTU+7uGfejhoabI+ZgIhAPs8AzvKUP1bciOJiuESGL5Fdr+6AWbrG1XrsYYS5bLT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6332457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi85u+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo1RA//fJ1zkRHNprq1dfSlKq2uBIc60dKut75fkzGAWR1EVgL1OwoH\r\nD2umB5Mzr/NSAAjdqh/nRiaM6sp1/gQEpR8x5eXBu3qTcaYzgjpn50zDQ1r3\r\naMSOvYcTlB88imxFTPhT7zH7vYQceGXyuW2xor+ucEXmnhbQ20JxwYY1aoSf\r\nJoEbspoxnqI/bVLjTbjEnYBJ1MSRKxNY5Kt8vnn+gR7juKHDiUkHbR2QmLh9\r\n15+XxNXQhbJTX43bLgEUJHUFcFgKNWWEZUWupeTx6Fz/WyfYuR7eI5ra/BO0\r\nyWb28LJ7oq+XfK6ZVVlLbvDVCoipcdFuy9sPSMHsQb+IQCSIDereO234sT4p\r\nay0ETPlypjIlZ1N/hV9UDEBx0YNA0q+b1+wVRFKOVmfNZrrg7BBUrs02lZwI\r\ngG2r+ReFHY9vOSiWGvj0UeqPUDm9/aDXhpw3VsWXnAREoDf1EfYPCowY6yRx\r\ni9bTzB1/22fW/8kry0KDowCO2Is5g5dQhqAHAfKNFvVUpKZMTPVp/vN2XvZ/\r\npVreiq5H8U3zI0gfER9y/WX8WTnRFN3RkdypYhaBiqj7vAtsLfZ15q5u2Ogj\r\n7xxVftGViUehjmdFoe9+rgEtgPxPQgK91Ba/iJ/5wnxJ7BT07gHCKQJd77+v\r\nIKIh914FruiKWzZ1hzIhiU2N3SFt0WgNlgM=\r\n=IphL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-5.0.2.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/93577cf41a03c6e08f524d56435c52e3/team-plain-react-chat-ui-5.0.2.tgz","_integrity":"sha512-7LTPZ26BCJ4bAke6VlpYHkB1YqNgqAhP/cv4R1ZOYdl0/DDsX018OGv/bl5FQ4lZiFECmHrBVjurHncP1dBRXg==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_5.0.2_1660132285951_0.012253467363221748","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.3":{"name":"@team-plain/react-chat-ui","version":"5.0.3","license":"MIT","_id":"@team-plain/react-chat-ui@5.0.3","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"fad83ca249b1109f8c5c9179ed0f10d01580a878","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-5.0.3.tgz","fileCount":150,"integrity":"sha512-l0br/gg1lFfUGjmqXLK7+3S3MjrPw8E/T9k1BPaBrXF3CH6evYX998z2bBHd1ZQoI8g+Q1Viz6LeEW1RVjMckQ==","signatures":[{"sig":"MEQCIBkepyZXqdILt+r/FtA3aJqCtFi27JJuJvKIAEvn3g1OAiB9UiQTMOmagkSyvKYHtz590LO4zWgXaCSq+b2e42YkeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6332501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9SD5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmofuw//dwSm3NGzheRf6QgnIQ38xU9GAVv9jN3GS8DA/wUpcq1p87cR\r\nA+gx5dkG/2EsWJKpT7maKw+mbh4kasDycgN0yEY/tK7Y0waxFOycEf0qec02\r\nevtb8LIwn2XX+5UMEOaVqBzfc5Kubh9wL6J0CIjZPsgKNrZK+jRL3vL6EWZf\r\nqUsb00rGOO0kBMUCRnd9LQ+GyE2DAMbQFN/2fKu1ueuYFBrn1JpevU0186/3\r\nPDTsloIYgIUILh1UwA60NcatbiJE7A8SauimWP49nS+ljC7mDj4D+rNkNXku\r\nUsEgQsdh7p4diP5RmvHdfbNR4UzO4G0mGmFIpxKLHkpCVjHTBLyf2hE0itAI\r\nAWYs/amhWlsFYCXYKfl55b+vSTF5r/McsNV5Xj94I4ZcWLJGvaUENWiKYe4Q\r\nr2sIBZMiscmBpyTBJK4Q/uveb/aoW6ucBv5B/iLgCnCh1GR/rPs3uyrDaQVn\r\nf+F8ttey3YfrMzfsnSExiBCW51Vqgv1LurPq+iHlsGZ1fnt1zAISMq9fnJWi\r\nsIFsU3QugM3KGfAfRVgawUXy6TmbLcTUie+COM9nh8ssvgItRi0le9V2HQ0y\r\nELLtxhu3w6qynB7Evt4SXEX168oCnNDyprjdGeA9HzYHoGrRy1b9nQ0Z5DUk\r\nOK5i9hbNg+zdPDJ1SQfg1GMa/np60KAfxO8=\r\n=s3tn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-5.0.3.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/88bbeb96577a8809eac61799c4af3040/team-plain-react-chat-ui-5.0.3.tgz","_integrity":"sha512-l0br/gg1lFfUGjmqXLK7+3S3MjrPw8E/T9k1BPaBrXF3CH6evYX998z2bBHd1ZQoI8g+Q1Viz6LeEW1RVjMckQ==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_5.0.3_1660231929348_0.5822434766410038","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.0":{"name":"@team-plain/react-chat-ui","version":"6.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@6.0.0","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"21db27871ab0d4c192b31773332670068fb3cb62","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.0.0.tgz","fileCount":150,"integrity":"sha512-u3FjdUFejh9BdmufWpk5fcwpNfV/KCL5/BObJ+AffpZtbeP/HOpbKiA4OEpel3VFWJ+cCOr1SVQzkYDYUGgbsw==","signatures":[{"sig":"MEYCIQCrUdTFMDza+YAg8kg7mD8tJrK7ph0TJ4HRU2PUMY6onwIhAO4da2g/z5wlv5UovzVun5M9Q0oETJXCIxs/zNMlterE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6331608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+lpuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoU5Q/9ED4cj1keUFeF7aJ3mezvR099MkIojtM/GJLhd+37HTwkH4ON\r\nfO5CZ4eYqHNJuzIp5AgG0AYdmW73SBZTOoEdmvN4ZYXB8kA6nt3MPFPG/K9c\r\n1uq5bM9Qqx2FFPmpJJ+A9pW+4B/Ct4sAIJRPdqqwAyv3IllfcaQkv45NsA5f\r\nfQMYYMnw1hZP/SeJk57HFibik81aimhe2hNUGVJfzrBcbwX4+Zl2Uyjlz0U8\r\nPTIVFs/DA32crckpMCypkLQQPq6rx3/LQh7km6WIGEJOff6UdtBpLsVFtg0K\r\nszs2Dt97Hr2Vo8vPCDil4MdoJJiq3BMEL9iHjbERS6IKJzjsBw91AYY5PPVo\r\nAqhwVwZfC8wdtYX4Uvc7Xq6a1oRO2PjexqKvgmgR44FeGAvzrGbE9oNH9Z7R\r\neS2IJyoqaFSPnEoI6XzOIDuwQSxwjcSAxqdoPQHiX+euCSCpSjjzpezBhxFl\r\nQz7niYQShZGIluv7Re/icQDXfp/PTHx4L2XlqtA1/kYgz9Rbok0e+f5Pgvds\r\niDxJCMabLE3dJBxbWS1xSvFbeDTw4OkAnQppY/vsa9irl/XByKagxnI3yDQU\r\nARNJJEJl5hP61M6tPdWCpiQZ65AG7Qhdh8klGEFd9eniGGYAdlNDjczrEhpH\r\nWJ6WqpAPNT+KhJFE0/Fc2EOXglg6M9xx2Co=\r\n=GMom\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.0.0.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/a5ac8e995094cc079a4ee1869721693f/team-plain-react-chat-ui-6.0.0.tgz","_integrity":"sha512-u3FjdUFejh9BdmufWpk5fcwpNfV/KCL5/BObJ+AffpZtbeP/HOpbKiA4OEpel3VFWJ+cCOr1SVQzkYDYUGgbsw==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.0.0_1660574318066_0.9647968815187971","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.1":{"name":"@team-plain/react-chat-ui","version":"6.0.1","license":"MIT","_id":"@team-plain/react-chat-ui@6.0.1","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"1d9c026d5296ffe52b35bdace48c45a026602d28","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.0.1.tgz","fileCount":150,"integrity":"sha512-fcirPqbXtVQKZtO1/30PaP2s8NXm7l6PWn1iPGajHKal5Dy2knLtAGkyGAZdXYtwnVW0J3zd9ki2zzo2wx+kHA==","signatures":[{"sig":"MEUCIQCgSQfBCuPO5yaLw1Tgy5zPh+cuVjAgsBaUOQ45VUM0PwIgcCftACWzI1lQAowMjwLAYwmr941njMW45fV4nfop0RQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6331469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA2noACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrymxAAhmLKz+vavISxnhk3s60PwMrdHywTEWj73mnIneQoQ4VNZxNz\r\n/l7XbsLCvv/jwgOQsJP0lxYmWkI/MPRb6dGTmKflqcSGcEaexDxXgiqQvAmx\r\nHZHKLHD6uWzi6aLi50n4YpicVsfN0KkwbPeuOSiMPkPwHNCdKQAgZ0CMmjFC\r\nwZMRS6ANlBxheIHih6GJ3QiAOhXNm8Q5vmPbq/jWZI7rbvTNnLJwxy8bFBOQ\r\nxOTNmFYR8fLIRBW0UA8JiSgtD3yfraHJ49iW10HytWO9bRPX3kJltGYBbMSV\r\nOoB9rA0e4lMd5kYUXn2htqdi3A7HIYBeXvLH5V7+tfS3nuEE2wJiBfrDUfRL\r\nLLxjV3sZdTGJZqOE4941JJp4qiHYcCBAFul3alRPCf3eNuj+y9YI+k9ob3gj\r\nCLsAwD3CozZILJtfWWR0RYCLNkXNrLLPxR7c+3O4EaLAUq/46Rrei4pLML1l\r\n/cH06CKbRDIsCb0P+cE7tpz5ArpNfXnTYxDPeQgfTyfQsyWe8PaYKy4J5l+t\r\nq0xf7c0u0JHkvnCtlQugy1X+IE7jWHmhC2c6arzaRpvhOg24XsrJfm/jKXsu\r\ndU4Moy5HhiHbD41fnrDG5jlsFDFQ7yZpNDeb1npWLtd394EQCSu1nYNwndhk\r\nqm3AavsyGYc0HS/3Xbe7+iOOYEHDrZ9MsMY=\r\n=3Azv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.0.1.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","genversion":"rm src/version.ts && pnpm exec genversion src/version.ts --semi --es6","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/967bb5756def2adb3478fff38dda9e8e/team-plain-react-chat-ui-6.0.1.tgz","_integrity":"sha512-fcirPqbXtVQKZtO1/30PaP2s8NXm7l6PWn1iPGajHKal5Dy2knLtAGkyGAZdXYtwnVW0J3zd9ki2zzo2wx+kHA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.11.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.16.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","genversion":"3.1.1","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.0.1_1661168104652_0.3534604027144972","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.0":{"name":"@team-plain/react-chat-ui","version":"6.1.0","license":"MIT","_id":"@team-plain/react-chat-ui@6.1.0","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"42db74e6d321cef20ee8468b8c513a349ba910fe","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.1.0.tgz","fileCount":247,"integrity":"sha512-AHXAz/PJYiZsCXuIG/IunDfbHjg4mKd1D3sUjR9h2Ml5S1BwjLfELiMTy5DAclc6/nE0TdVlZLz4QPx5mrzwQA==","signatures":[{"sig":"MEYCIQCAABWAMLeK1EC8GQGQ3CdLWPl1CrbBhraVYmZHFBEIcQIhALlxO5bD+hEN3A5Bc60MFcq/AvVPWrmen/9QvWlsM4Bv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6679775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDgcRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpefw/+J/4/lodJqnKh/4ooM3+StOW0ysf49p+Mt8WQ1J1T6Nn1jFOg\r\nHTSrkpfQ6xhBTp2xmZOSQlHZzzZjMC7v8lyZiv5JCZ/ihoYdpRZwyKVm/6Vj\r\n9UdWSOTBV7VVrJrQzLjz2UGz6uK5qOtmCKS1o0ETZ2Z2lGJ/iYvg4611cBct\r\nDxBLaXZpmF1B5MjF7vc75iYvrQF+ue410FrCqfeRY87qJZeo1joU3MZ3k965\r\ntJqWWuKS6Levab8BTOd8YgFsmADaAXmHZ5eDNmeoVcb5QD435GwdEVyalB5w\r\neFuproHN2+lCCEQmYP4Eb46z6jHwjArn/DX0smYJ6ZJ77FOW286NdFAj2M8y\r\n8FVxFNd/MR6capIVEQtafc36jWKiQEKYCgtvs3fy+ZpZYoiD1A8L7NeIYSR4\r\nCr4dIgcIM0eZ9yyJ5p98+rkdIF8OAiSXP1xDyInURZD75JRUGN8W0WiCkWtV\r\n6yzOmGzaKamwS4pvcY2FSkEfskTXtGbvp19xEvqgF36iArjkkLHCn/By7cv8\r\ni7T6TGpkoJzH6r2ZEjTFbcQ+Xg5gt2jFDa9xsIZaUl+aJrQS2CKlCluh+C6l\r\nfZCZiPxQupo4puzIMc9lzRDsA010hI4VXFxKVQbv062JGhrUfb/EHOat3fxs\r\nrZPUCDIsUOjIgFIq3/O1DWp8L2isQmBV3gM=\r\n=6quA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.1.0.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/2df66d186f6fa09ee156c3f35e2281a7/team-plain-react-chat-ui-6.1.0.tgz","_integrity":"sha512-AHXAz/PJYiZsCXuIG/IunDfbHjg4mKd1D3sUjR9h2Ml5S1BwjLfELiMTy5DAclc6/nE0TdVlZLz4QPx5mrzwQA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.1.0_1661863696720_0.20931311813745967","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.1":{"name":"@team-plain/react-chat-ui","version":"6.1.1","license":"MIT","_id":"@team-plain/react-chat-ui@6.1.1","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"8e7d8004ac56cd3bad016fbd5ccf3dc2e36b3479","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.1.1.tgz","fileCount":247,"integrity":"sha512-+wxaUkAhajE09+oy8PE2wj2Io5eWKHp/+cq2jQhl4/sxwOgFSdCicyx+jprZIx3emP5JNjFHPO5qQC2fo2LweQ==","signatures":[{"sig":"MEQCIEzAVoO4SWWuUZc82oRiGs3ZCCo2f7gxNskXvsm1ItwwAiA+AQPDK7E4MzNAzmIXZmnnpKRkmDUB/yaNgrNPlE3hFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6679775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFe3cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8RQ/+IzFgIULoPNbc492V2k9s9csMluxrzKxJUUdM154grFC8EBy2\r\nWwfPWGZ1t9Bf81xDY/6EFyVA6+6AVrbDQbY3C043cFoyqaV7357eu+tuYbdH\r\nusrnXU/7NqPZX0IgGM6MoYQvUHxbs8Ah3JPHW3ToQTM3w4pGZyLCo4zmz5tG\r\nhUAEgpsv6VoIncS6Wy11mN9fOjqNftCgi28UvBXjcT4B7wyDDnQvWaVScUkh\r\nXz69UNc5RbCLQWGqMDBPVR8MBxgTOej1TI+TdWg6sxr6Dwkm0MKC6a7gagVo\r\nUw3+59iWdHGSBQjdazOxDEO2f+1pl6OcacNPBryYz2iEU7FZslyZnGnvP50i\r\nAyJrnG+bL0CrwUtKdW4fozAll9fykOTWCgB4V6Tg9rCzzu9vxRRmHhx/IkF0\r\n6/YyOzO+9uHZWHsgwIEBfKrQBsJCBk0H6K6g/m4M/5hOl9lazAVhk63iw56Q\r\nhaBq/0wHqvO8S2XFORVFMH+S6zUKwF4xytbLLSI0r64YxLtT50+OEOz9vD+e\r\nLvmwD3iQKNj+g9rv/8VBY/FgjKJA7KUKv5aIByvQ10wcCcAjEWcWmLfpBlpG\r\nZvFw+bHD//vOWVoNf/vLRmbXAvKbIxW11rVomu76jcjC4Ns1cK22enrQdrfr\r\nWn2m0jbXN00L3hZRlNHchw3gJ+SDZC47e0c=\r\n=xIsR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.1.1.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/676b071d1917cbf4d311bbe7129907f0/team-plain-react-chat-ui-6.1.1.tgz","_integrity":"sha512-+wxaUkAhajE09+oy8PE2wj2Io5eWKHp/+cq2jQhl4/sxwOgFSdCicyx+jprZIx3emP5JNjFHPO5qQC2fo2LweQ==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.1.1_1662381531864_0.35354899695098596","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.2":{"name":"@team-plain/react-chat-ui","version":"6.1.2","license":"MIT","_id":"@team-plain/react-chat-ui@6.1.2","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"a23bcd9efa917821a4f4dad115e6d37cc47388ea","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.1.2.tgz","fileCount":247,"integrity":"sha512-CtYU3hA/FsJbEQ42yJDQScVQItc9rDnY4qiFPcMacejs/cwQcjrzClAoVxaM9NjjeV5VP+9lXhAxMJFcQwB+ew==","signatures":[{"sig":"MEUCIBhRa82akjfm+ZuB2VVqQBGMGE+sfhgcj4P/slJZ4VW2AiEA0qlKb8sO6vm7xbb3uggxZFF/6gmKAgWeiQNAcGz6Y2I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6679919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjH1c5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqU8Q/+Mq5FZqkYRcBWulUZEw0tyqmPFKCpmfPceGK0UtNvLZfvsb6A\r\n6xotqGcMq82gnzrYduj+FFtj3+M1nkQeoEyLv/gVLG7sXnhrt8mklNEr8zIl\r\ncElWmls7sd766UggjOLDFrok/37pJHlPqUDvyo/ZuzXzhPTSsFFvmUiVj1Zc\r\nmqupj/m7vWcj5z41lNBcaFGJ2v04qaxtZCqNhX9vdB85nCZa1Cz1vOy/hx+t\r\ntzifKxV6qZzP7yPEJUjng97RAJI5MjB6Jx/ZANyM8enHD6nj3+kfKqyo9xI3\r\nVQSn4ijyT8QWiXc+iQSzegVxW6CTmkLUEU0bCkxnWeBMLgtqT7XhMWfrEmta\r\n/62GL/y0tXdWfgVtuibUbulYUO0UWQBZ5udY7wI3tqnIvvmjJ55zhYJ9k5sJ\r\nzXSLAXeTK69xCZ3EcyFUoya/llAmrmwRaZmqdZZLK1KVtURS54bVJ+4yHUf5\r\n4FHBhDAwp/d5RY+7mueI9pv9jdNh6bGU9/Qnqra6mPJ3rByv8I/bLOEpefc+\r\nzdeUYiMO2ixSlU6d4AF08B6nTvDy8NCzjuqM8v+bPTq/YupBl6/YYUYBIsq3\r\nxIGf+ae7FAqQk7Twwu/l62Q7yhc6/EKIFb9Eoq83qSA8y3lJbnhGJ2kdb7Qo\r\nL0UY1f6QkeTpZiBhaeQu8/OHTpder1ulfLI=\r\n=xLLq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.1.2.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/ad1cf3dde57872c9486363ad8aea5e91/team-plain-react-chat-ui-6.1.2.tgz","_integrity":"sha512-CtYU3hA/FsJbEQ42yJDQScVQItc9rDnY4qiFPcMacejs/cwQcjrzClAoVxaM9NjjeV5VP+9lXhAxMJFcQwB+ew==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.1.2_1662998329571_0.5066519363907167","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.3":{"name":"@team-plain/react-chat-ui","version":"6.1.3","license":"MIT","_id":"@team-plain/react-chat-ui@6.1.3","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"ba8854da4bda5368f9e720b996f69f6bb2f306ec","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.1.3.tgz","fileCount":247,"integrity":"sha512-iDbKBlJVznkCnRdPu3XTgItsUe4lYixzjcbOOITAckTid1Nz7/z9HBqEtYgGrXshDqNOsG8cEfJRTboHsAcgjQ==","signatures":[{"sig":"MEUCIQD1Z3mtTMwGEySd7ssyKGtAGWO6hDdDcceZExHu6WYjdwIgETy354rvbvA3jyDIqPXm5KEcYJCbZRujs8dWLVOHMMo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6680925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIGbAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorEQ//WtPmahDW4S/gQlZ39jT0L5vGN5Ge1JC4prZWtRc+jDGPzJ98\r\n9/Ix/0yYAwQxy/d4RTPWwfDHgY/pJJ+cBPW4dDXaM1g+buvi7n+McwC5DuFq\r\n+sryaPb+5PcQXOWpgMX2kVfgAT2yd+VnpHa6oBOf55ea+aHFbSm38o5c5fAS\r\nhK52lhVAZRRh9pgO5462MzJGQlcua1HGLC2Yq8zB8vCrIV+mkAYeZ07qOjPN\r\nxrXIgaryr7ue7xjsXnl6Y5O3yHJes/N1H2SWCGmU56oFOCJ4wv02NkihKSf3\r\nce8URznwD2smlwnFelOWLtfK+LuqTjcinxC0mjWF2QxVec7+N7LqE2Nh7i15\r\nmV/6kYFOKIqjH1KUH/vL9uXCqg9dxTo+CBHZia4s3oqIcVq1lJN+1xbKHkgg\r\nEHUUpHeyyIFNotM5rvwZrtP1K0elXk6oZtWP1yT3gfvVfyH805hGczWLmaNP\r\nVHGGt5WRbyn8UMnyuOpvMKG3brzyQ2CqVVpFUkgDjiXwmAQG4EZpcu396ocZ\r\n6gZb+pV6YGiUfUBlHeD5Gpczq3sVe5CkAmIMQFQ3skXi/fI79KIxf0JI4cMq\r\nbB0A1aP/mC7fDY2HAq37yXQw3IbhsaRS27hnZdNRe5hHZ3P+M3wB8yPEBTj2\r\nxcPeQ5Ap9JjODZ6AtTl/Z74lbaAGYzOO56Q=\r\n=bQue\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.1.3.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/e0ea4cf75238c7af94899f52a054d9c0/team-plain-react-chat-ui-6.1.3.tgz","_integrity":"sha512-iDbKBlJVznkCnRdPu3XTgItsUe4lYixzjcbOOITAckTid1Nz7/z9HBqEtYgGrXshDqNOsG8cEfJRTboHsAcgjQ==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.1.3_1663067840586_0.1310827072110936","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.4":{"name":"@team-plain/react-chat-ui","version":"6.1.4","license":"MIT","_id":"@team-plain/react-chat-ui@6.1.4","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"da6d094f356e30e749ce6be2a70824ba46438afd","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.1.4.tgz","fileCount":247,"integrity":"sha512-YeW9RAevaUal/nkRiHmotppK9APgQl6noRUZHxzAzXfaikMmIEVeWTQgZux82JRMdk/WROTnEm+cuF60NicJGA==","signatures":[{"sig":"MEYCIQDfPV0EHKQ2lAX3YVVTZFZPyRYMA7zXXPMvuamTHGUCngIhALovpUv08c2AFSUXY8d8pNW0I8BMXr723BGQxHOTrY57","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6680996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLE80ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQPw//Sx3WfCLXBXhhIjVXshTnPGHuO9v4nyn/kGy8TbnvEvI/3Z6w\r\nrMd6D0t6sRVjg/vTZl+lID8FCnWNY7s6GqDryuzuxHiofcJnK3yOcyNzZjrf\r\nrTEu1TDsIVo0vEfasbzZsijH/UoAMcO3Xtj0zDRiHGfdtZkWr98C+InPq26J\r\nT5j4PcDFQmqyQ+zIraqWyk3X33MFHf/uIZA5FTbSwgIU04JtD6NDdnB/Ihzq\r\ncZx0HP+Oj9VBi8UMMoGLlJ3z4j19xCKJiAAHSVuKeZb1txmRnPwmw44u6Uou\r\n+qdbIQgGLiLjUFnhtEuhG0MuOS6dsgBAk1uFeR8pcwqJxfz31Vea/yfw0ocJ\r\nArcdf78TcTqHe84g8ID8YhmYcERTDNjxGtPXNFuaJLVaY6KHMxMiFQDzrz5n\r\nCCfPGJB5j0c0C+9ugfzC6g6IqW8sqAgz7KzZ+fmv5e5Rc8awzavlg3KfNEX3\r\nLBjHd03/n7LAKZjSg8Lw9sjYI4skvQr813wWyK1cbq+Bm+tmEzvAGv5RAQho\r\ntM1eYtX22fXvmfNwKgTUQU26muoIZxHyb9osGef6w23wr7BgJ6h+9Yj2Sfxq\r\n3wJ6A24GLKDXZnyPonH2p6vK//DvpkZmXsQRj/SD2nFhWU3zIwnS9AkfubZC\r\nPHOQDVEoJrq8yw1WPNVzdJXOIo+Uobv95W4=\r\n=sbx2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.1.4.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/4848e8eef0301db4750be9a65c027853/team-plain-react-chat-ui-6.1.4.tgz","_integrity":"sha512-YeW9RAevaUal/nkRiHmotppK9APgQl6noRUZHxzAzXfaikMmIEVeWTQgZux82JRMdk/WROTnEm+cuF60NicJGA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.1.4_1663848244387_0.4892756080242242","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.2.0":{"name":"@team-plain/react-chat-ui","version":"6.2.0","license":"MIT","_id":"@team-plain/react-chat-ui@6.2.0","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"894d6eba5b78d2957ef056b0b3cf3db579a8badf","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.2.0.tgz","fileCount":247,"integrity":"sha512-zR1kBDbBRlo9O9sdk3lutqEFepowxmK7Nq1qpODGj+NkVp0bk+NcPe/E+SvKDYw/CNUf401bADMKwVBdgeQLmQ==","signatures":[{"sig":"MEYCIQCtkWVxrXSqdNT2p9+Q+drQV3BdJAHqGISKNeHUVMt23gIhAMfDDhyCFI2B4rmj17+WyV8wkZAdnbTYadK4OK2cIQEO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6789757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNaanACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmofIw/+JZnJ5ejwXJQPwbFBj+mBGnkN0fjtGihbCv3MlFBapXGeqzKh\r\nOGuyQLFNONzMVZbq0G+n2zOzH/VQNk7Qme6HHKebUcWgnjcL7kzu6+iGJDsd\r\nae/wjHVfWEPOPS1wEXVmD7cZKNdkj64LLrwT92B5vy956qw3cBsd03s9uZ0L\r\nEYNqUx19DbGZ/SWwDWp3H2qrtQ+TgV96lw68zUO4JaGdgirY0CDGO0OlrXAm\r\nhfTqxkXBxjkOPfHdOKgdMbaXaeSlXtpgr1Iy1VHnXIGHkATEvr5jdyzqNBOf\r\nJu+2eH4TobU38C1E9S62g14SmP5IjXlLKqat8wzFghoRU761q9NRAvHp9ar2\r\nuWMRaMVp5T3uoc34EKIG9SNT98shHYvanrg4kF1v/FarIRk6PxiUbxDOdzdA\r\n70v/CBfiXLOnzIDwdKONL/IXe5Ezr4dO3n8iT0pLWZfzupvLIPAS4pBWu3lW\r\n68oreU7zq4ZVu2jr13leAEZCoYSjZfYpodN9Sl8vbQ1NWTiHFA3dNg3LfMch\r\nSLqhExjgtbdVZZI8WVjx0Toiq64gTiJ/SMFGyX9H65hxeRaNH3wnshRjPh9m\r\nS5Lf6qWE61+9N4Xh3hETnv13e7/AIdOJha7mmtpXi9lK1wE1MIZJWpZ/4/SW\r\n8O0EWs83cQMURCscNJhanx6vVuoiaXhinHQ=\r\n=Znwb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.2.0.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/132e0e992553020a01cfc73be2dd7729/team-plain-react-chat-ui-6.2.0.tgz","_integrity":"sha512-zR1kBDbBRlo9O9sdk3lutqEFepowxmK7Nq1qpODGj+NkVp0bk+NcPe/E+SvKDYw/CNUf401bADMKwVBdgeQLmQ==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.2.0_1664460455486_0.6670826359736832","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.2.1":{"name":"@team-plain/react-chat-ui","version":"6.2.1","license":"MIT","_id":"@team-plain/react-chat-ui@6.2.1","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"b3d2776484bfe3c1f6979baaf1a500e72522744e","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.2.1.tgz","fileCount":247,"integrity":"sha512-RJvD6Vuw2eeMunz95L/qg7r7lGiZPM0Iwe2UFisrxxLmHTvM8hhXH+sFQr+6zai8RX5c0NgRDvjzW/Lg3yGkgA==","signatures":[{"sig":"MEQCIHns41vf/meXWkzOrmYaCWDCfgdeE8IJb8EF6zWa4ghtAiAzxqRBLp76HWPsl4MIZn+ISRxugIgXIYP0m07oLT3b1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6781176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjW5XlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9KQ//cbVdC66uihe4gKhhBIlU2i/aj4OH9JCyIP1OfHP+VD7xzw6G\r\nVF6uDDfv1EY7vw0ODcBo+OddiaKFWzRyy6VM3M/5BA1D14JRheHM4TPE13m9\r\nZ5vvXy9Z2VGi60gdsTgn/nGYvUiOCHdh0FNhefHPcfGB1mZWgepqYLqHKo0B\r\np1SQ8h9usVJx1YBqsySv5C1vbMKWPBmanRcPwP3wC0n706eiOr4vzZmein33\r\nDypcj3n2x6l+UdW5pZSci6+ksmRrYWVM2AfQGeDZ20YOfMZX8SA0srBQFSZp\r\nfavgCEPpPfrSGeE/UrRmz5IHygxVF+VZXKfF83juw0pWvCbmJITxftwU8DzX\r\n3KJeB8JyGYLG3tWV5EQjxmnRlXs/otxqWqzkP2UVeYdQg7XN+hvRAs5IhdRe\r\n0RKbwLCPasSty7aI028crYHMYKK6GZEBBkCZQNGO+1+se6/1SFkUy5zaIVUF\r\nstDLKPni7rONxlgIfBMTEDzmdFyF23TLqNhy8zVlVfqnQRla/eFxGbjYP3YT\r\ngBT4B0lbvb+2PcKjFeaDafCFLqSRvX/clCsSIrP3oT0yXywLIMs5X2JLBMHT\r\nKBe7mSaVWOhgzWzkoCgLA+s6Be4eX7j7BowSV6dps9z0Yj055gD4qU06GK8O\r\nt90j6st6gKGJ75vN7bWItho7sa6fKVTuK6A=\r\n=BLUB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.2.1.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit","build-package":"rollup -c"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/cf769cd4a4100078bf3ada156ccb06a4/team-plain-react-chat-ui-6.2.1.tgz","_integrity":"sha512-RJvD6Vuw2eeMunz95L/qg7r7lGiZPM0Iwe2UFisrxxLmHTvM8hhXH+sFQr+6zai8RX5c0NgRDvjzW/Lg3yGkgA==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.15.0","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.17.1","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.2.1_1666946532773_0.4764167686881766","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.2.2":{"name":"@team-plain/react-chat-ui","version":"6.2.2","license":"MIT","_id":"@team-plain/react-chat-ui@6.2.2","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"1933b8ebae2f651f54dfcdc2bc8e3efa971d009b","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.2.2.tgz","fileCount":247,"integrity":"sha512-LEy4doZ7Osqlnw5YAt9a9JSMEpA3D10w21wtqf1RlgHGaHJPaGCSztzIV0RSdYIYV9oz8IgYhjTzwlDUgl7iqw==","signatures":[{"sig":"MEUCIQDrG3AtpN0VMvaFBTDFm9VD8oWJ9VbF44ING8xjhgJI1AIgcPuy+6WBQGHzWVIkQE7EAl7h3A6roIpNmNrrlEDL6l4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6780825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJja2lTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEfw/9Fp/y08zfOUZGI1sVmVKT7Dcc31WorWi2MxsVpAL3fpINrR96\r\nJ51EoYm0gmEBeRjMTesXMZWWS4czHfa2MAdXwusv+OUsA2YnlyCMr+y8Qk0+\r\n8l74OwGpQew5EWL4qvTaHbn0PBcczt4Xq6T7fpko9u8Fg4JosMNgEiCOWBJJ\r\nY3GYpREmkmqJKytTAQ99F66UtkcTfZ2PLq+it0V8NfyHRuYqY+gTj11ndLOb\r\n4VEWyC6IWTuSkWjPPQ45U+NswSE5c0cNmyBw7UVUcVN0GcEH+cY7ANs/9qn1\r\nRdPX4BXZKinXp64Nytm2E8oGNs+ijvJsupGgTsZr9aZOiQAcXJhRzdtHH6T9\r\nfBW5lqjINV4C7YwkMAM71LV/Q1ytnwA1PbPsvtuuiIMUXjm6HUWj/6OFtkCH\r\nFs5IVQZImtDOrekztf1hwyGvcNWI/NbeBu+KxfubeE9HSRU2asjmzqvuFGpW\r\neC2blek/vlC8pzAHe9mN1n6zH4J79+j/IQ+T4BMCWFfevG4wUiPqH/tzn+Tc\r\nVxMf3EZpbv0Yw/1YJmkrgr1WnWG9/W0O5IALftptozRtYPjzhTFpR12jseal\r\n8lpWY5aXNedxHawyPMj27oZrV6H3sg9fwVpLlFUrZsV2kySXHJM4elKybk9v\r\nVKOenmSNg+d4+EPOa1YIo7h5Jr9z/hQqllA=\r\n=yu6b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.2.2.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rm src/version.ts && genversion src/version.ts --es6 --semi && rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/77a3b72c89990a4d3b5848c9cbfed6f0/team-plain-react-chat-ui-6.2.2.tgz","_integrity":"sha512-LEy4doZ7Osqlnw5YAt9a9JSMEpA3D10w21wtqf1RlgHGaHJPaGCSztzIV0RSdYIYV9oz8IgYhjTzwlDUgl7iqw==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.19.2","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.18.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","genversion":"3.1.1","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.2.2_1667983699079_0.4537980180146901","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.2.3":{"name":"@team-plain/react-chat-ui","version":"6.2.3","license":"MIT","_id":"@team-plain/react-chat-ui@6.2.3","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"0abeb42aab940fa7655d962c965379637ec68d59","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-6.2.3.tgz","fileCount":247,"integrity":"sha512-hKCXJaUYqtgjyQvBz7qLN2P96AR8oTdN3bt5W6RJioAl2AqGQaSsFJZSqDRBL5bswGvRVhGXAHcJRy8OBqzFnw==","signatures":[{"sig":"MEUCIQCKxyNcn2WX8j/J8w2yF7YexS9OTnzKVxcstyazBy0j7QIgRIehCc3nvNtzzZMwmmHirdX9azYEbYE7xdgnZM75jZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6780775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGWuMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpUWBAAnGcxvSX5FM5y/HusLb15T4KqjGyHEr3QVpqdO64W87kcbuTP\r\ntwPUR6AbkYS5ibNjESGQR+7BVRgzyfocURTcs0YP88FmY8Ac62dEbGyIbaX+\r\nLIYFJUCrILVflpayIxai0wYh8KqE5oLFCipGPhbX1cj7BmAD5uJU8zlR7nED\r\nkMADLrFbj1NXH92W13lYpOOcRvTVgGraomdoXwr/xAnsoMjvU2sfDl9CX3at\r\nFNYnUbJJ8kApi5oc7AdijpGtlceoEeWlF46EFnth7VmPxC1RZjP6HupGa8Yo\r\nhp4ymj+EaqLKoGmv/kxZhrzZOHz/dgAzzJF+5YXulwSIMwoLkL2KsdyDdrRf\r\nXT2jaAxuz5p3r0xGBsCZ7tJQamXh/rALtvZI83UhnDHosSEMA49EvNPnAUiY\r\nOFghHrcOaNtTt2lk0sMrOmI5Uv6OQJMwDbQAXYIVQCXVCG3dgrGZr9fj1Nx8\r\nzfl9iu98oLmJko93K782dLEKvJMuk4u9vhca33ojZOaKI3wdGxlrXcnompUX\r\nN18mVooZzKaQx1Cv3j1FF/M1lIU09EsNDZUr2q3HaG5mj99igHqC2Gtixgyd\r\nQAOoCn/3OlrNZa8lDi727Gz/psEL2LkMU+kYM2OU7CdvRZ93N8YYfxNLIZSJ\r\nTlQcrtHS/31qZPeAYefWoKyYICGPFBPaycM=\r\n=AVA4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-6.2.3.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rm src/version.ts && genversion src/version.ts --es6 --semi && rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/31399414d8431ff28f5b8ba32961593d/team-plain-react-chat-ui-6.2.3.tgz","_integrity":"sha512-hKCXJaUYqtgjyQvBz7qLN2P96AR8oTdN3bt5W6RJioAl2AqGQaSsFJZSqDRBL5bswGvRVhGXAHcJRy8OBqzFnw==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.19.3","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.19.1","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","genversion":"3.1.1","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^17.0","react-dom":"^17.0","@types/react":"^17.0","@types/react-dom":"^17.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_6.2.3_1679387531882_0.3411788822474715","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"7.0.0":{"name":"@team-plain/react-chat-ui","version":"7.0.0","license":"MIT","_id":"@team-plain/react-chat-ui@7.0.0","maintainers":[{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"}],"homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"dist":{"shasum":"03405fa7c585e6162fbce18f7e41d20b510164d0","tarball":"https://registry.npmjs.org/@team-plain/react-chat-ui/-/react-chat-ui-7.0.0.tgz","fileCount":247,"integrity":"sha512-y4fP6Lsim3uK/o1oWbIQHNLR50VJIQOH8zVbx9aqhYLW2xp4TE1zq0dH/e1rYFDa8vobS6kWu82cOXVyuxjbgQ==","signatures":[{"sig":"MEUCIQC5tvL+mKU8BFdlKdLhO+rXdv6xddGrV3zLammXkf8klAIgS5eDUWi0NiY1fNe2WzTvKqCO4zOJWzQCTMM5dXdHH5M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6780783},"main":"dist/index.js","_from":"file:team-plain-react-chat-ui-7.0.0.tgz","types":"./dist/index.d.ts","module":"dist/index.es.js","scripts":{"dev":"rollup -c -w","lint":"eslint . -c .eslintrc.js --ext .tsx --ext .ts","test":"jest","build":"rm src/version.ts && genversion src/version.ts --es6 --semi && rollup -c","watch":"rollup -c -w","gen:types":"graphql-codegen","typecheck":"tsc --noEmit"},"_npmUser":{"name":"plain-npm-bot-react-chat-ui","email":"npm-publisher+react-chat-ui@plain.com"},"_resolved":"/tmp/1b68f6392fa92a21640a83913166fc27/team-plain-react-chat-ui-7.0.0.tgz","_integrity":"sha512-y4fP6Lsim3uK/o1oWbIQHNLR50VJIQOH8zVbx9aqhYLW2xp4TE1zq0dH/e1rYFDa8vobS6kWu82cOXVyuxjbgQ==","repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"_npmVersion":"8.19.4","description":"Plain and simple React chat UI","directories":{},"_nodeVersion":"16.20.0","dependencies":{"zod":"3.14.4","axios":"0.27.2","luxon":"2.3.2","redux":"4.2.0","goober":"2.1.9","lodash":"4.17.21","csstype":"2.6.18","graphql":"16.4.0","genversion":"3.1.1","graphql-ws":"5.8.1","graphql-tag":"2.12.6","react-redux":"8.0.1","redux-thunk":"2.4.1","react-dropzone":"14.2.1","react-toastify":"9.0.7","@reduxjs/toolkit":"1.8.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27","tslib":"2.4.0","rollup":"2.71.1","ts-jest":"27.1.4","tsconfig":"0.0.0","jest-diff":"28.0.2","tsc-watch":"5.0.3","typescript":"4.7","@types/jest":"27.4.1","@types/node":"16.10.3","@types/luxon":"2.3.1","@types/react":"18.0.14","@types/lodash":"4.14.182","pretty-format":"28.0.2","@types/react-dom":"18.0.5","@graphql-codegen/add":"3.1.1","@graphql-codegen/cli":"2.6.2","eslint-config-custom":"0.0.0","@rollup/plugin-commonjs":"22.0.0","rollup-plugin-typescript2":"0.31.2","@graphql-codegen/typescript":"2.4.8","@rollup/plugin-node-resolve":"13.2.1","rollup-plugin-peer-deps-external":"2.2.4","@graphql-typed-document-node/core":"3.1.1","@graphql-codegen/typed-document-node":"2.2.8","@graphql-codegen/typescript-operations":"2.3.5"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-chat-ui_7.0.0_1685357347473_0.44750162878272515","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2021-10-22T14:24:04.371Z","modified":"2024-06-06T07:34:35.537Z","0.0.1":"2021-10-22T14:24:04.565Z","0.0.1-dc1cf92c":"2021-10-22T15:04:00.999Z","0.0.1-50327e18":"2021-10-22T15:50:57.803Z","0.0.2":"2021-10-22T17:33:39.328Z","0.0.2-d49a6c6":"2021-10-22T17:41:03.895Z","0.0.2-44ea49b":"2021-10-25T12:46:53.036Z","0.0.2-7f47484":"2021-10-25T13:15:21.175Z","0.0.2-fce04d8":"2021-10-25T14:44:11.099Z","0.0.2-8eb4d66":"2021-10-26T09:04:56.423Z","0.0.3-068d5b5":"2021-10-26T10:15:08.168Z","0.0.3":"2021-10-26T10:15:20.937Z","0.0.3-abde9fc":"2021-10-26T11:01:29.336Z","0.0.3-fdf2446":"2021-10-26T11:10:15.894Z","0.0.3-3bbb698":"2021-10-26T12:51:24.236Z","0.0.3-3d4d9bb":"2021-10-29T08:52:47.331Z","0.0.3-62434b2":"2021-10-29T13:02:32.417Z","0.0.3-7703fca":"2021-10-29T14:13:05.218Z","1.0.0":"2021-10-29T16:40:51.177Z","1.0.0-68043a0":"2021-10-29T16:40:53.096Z","1.0.0-2f3c023":"2021-11-01T14:19:37.756Z","1.0.0-e31963f":"2021-11-01T17:35:42.307Z","1.0.0-84dcbc8":"2021-11-02T16:03:02.157Z","1.0.0-7bbf48c":"2021-11-02T16:52:22.823Z","1.0.0-fce15e8":"2021-11-02T16:54:30.805Z","1.1.0":"2021-11-02T17:13:31.342Z","1.1.0-f2a7add":"2021-11-02T17:13:34.360Z","1.1.0-9f924cf":"2021-11-04T14:03:44.920Z","1.1.0-5efd0da":"2021-11-05T08:55:58.175Z","1.1.0-2da5ae8":"2021-11-05T14:31:06.828Z","1.1.0-09a77e8":"2021-11-10T09:51:13.732Z","1.1.0-4d0572e":"2021-11-15T10:01:54.784Z","1.1.0-fd5580d":"2021-11-16T15:31:31.852Z","1.1.0-0ed822c":"2021-11-16T15:38:55.829Z","1.1.0-4c5bdf8":"2021-11-16T15:50:00.793Z","1.1.0-d5f764d":"2021-11-18T14:25:57.375Z","1.1.0-d97b0b9":"2021-11-18T15:34:51.204Z","1.2.0":"2021-11-18T15:51:36.728Z","1.2.1-0e64e68":"2021-11-18T16:26:58.168Z","1.2.1":"2021-11-18T16:27:04.292Z","1.2.1-3630a53":"2021-11-22T09:48:49.403Z","1.2.1-77c142c":"2021-11-22T09:53:12.556Z","1.3.0-47bb29a":"2021-11-22T10:02:50.360Z","1.3.0":"2021-11-22T10:02:55.845Z","1.3.0-eb42581":"2021-11-22T15:39:09.745Z","1.3.0-2eebeb4":"2021-11-22T16:07:13.989Z","1.4.0-b23e14b":"2021-11-22T21:27:29.973Z","1.4.0":"2021-11-22T21:27:35.427Z","1.4.0-d044cc3":"2021-11-29T15:20:43.563Z","1.4.0-2fc2ffa":"2021-12-01T08:40:07.707Z","1.5.0-6690563":"2021-12-01T08:47:00.441Z","1.5.0":"2021-12-01T08:47:08.714Z","1.5.0-1e7a934":"2021-12-06T10:58:08.772Z","1.5.0-dcb5b00":"2021-12-17T09:47:10.534Z","1.5.0-b509df3":"2021-12-20T09:50:55.401Z","1.5.0-5d4bcda":"2022-01-04T09:04:43.884Z","1.5.1":"2022-01-04T09:15:49.684Z","1.5.1-dd630c9":"2022-01-04T09:15:54.274Z","1.5.1-a79a5bf":"2022-01-10T09:49:31.711Z","1.5.1-2100b3a":"2022-01-17T09:48:26.721Z","1.5.2-39fbcb4":"2022-01-18T10:04:33.615Z","1.5.3":"2022-01-18T10:46:48.011Z","1.5.3-a56d225":"2022-01-18T10:46:50.988Z","1.5.3-95fe018":"2022-01-19T09:30:09.310Z","1.5.3-525fe7c":"2022-01-24T09:55:26.790Z","1.5.4-b880ad7":"2022-02-04T10:43:53.010Z","1.5.4-8aaed15":"2022-02-07T09:22:04.383Z","1.5.4":"2022-02-07T09:22:12.365Z","1.5.5-eaede4b":"2022-02-10T14:23:50.992Z","1.5.5-42851ae":"2022-02-10T14:59:01.651Z","1.5.5":"2022-02-10T14:59:06.263Z","1.5.5-da49b5b":"2022-02-14T10:24:52.515Z","1.5.5-a481c31":"2022-02-21T12:11:49.286Z","2.0.0-d4a2c99":"2022-02-25T13:42:45.691Z","2.0.0":"2022-02-25T13:42:48.143Z","2.0.0-69a6b79":"2022-02-28T14:45:18.720Z","2.0.0-5960c89":"2022-03-08T10:29:06.265Z","2.0.0-bd8e625":"2022-03-10T16:33:04.644Z","3.0.0":"2022-03-22T08:53:55.202Z","3.0.0-04cdaa8":"2022-03-22T08:54:00.823Z","3.0.1":"2022-03-22T12:51:26.197Z","3.0.1-55c9796":"2022-03-22T12:51:38.945Z","3.1.0":"2022-03-22T15:36:25.555Z","3.1.0-5f1ce72":"2022-03-22T15:36:35.798Z","3.1.0-94bdd90":"2022-03-24T11:02:24.336Z","3.1.0-f226022":"2022-03-24T11:23:49.855Z","3.1.0-3efb92d":"2022-03-24T15:20:28.309Z","3.1.0-f938887":"2022-03-24T17:51:58.716Z","4.0.0-82bc487":"2022-03-24T17:56:28.963Z","4.0.0":"2022-03-24T17:56:31.475Z","4.0.0-661c70d":"2022-03-28T11:09:42.908Z","4.0.0-baa5456":"2022-03-29T13:38:21.054Z","4.0.0-0ac8737":"2022-03-29T13:48:03.130Z","4.0.1":"2022-03-29T13:50:39.358Z","4.0.1-538c14f":"2022-03-29T13:50:46.054Z","4.0.1-c33eeed":"2022-03-29T15:26:32.706Z","4.0.2-f8333bc":"2022-03-29T15:30:03.016Z","4.0.2":"2022-03-29T15:30:05.300Z","4.0.2-16c3884":"2022-04-04T10:18:19.852Z","4.0.2-9217425":"2022-04-07T10:29:43.126Z","4.0.2-857a494":"2022-04-07T16:20:14.974Z","4.0.2-495b5a2":"2022-04-11T12:42:33.196Z","4.0.2-888d6a3":"2022-04-11T13:53:07.887Z","4.0.2-e8b1403":"2022-04-12T09:39:02.452Z","4.0.2-8b2c6d6":"2022-04-12T09:50:05.399Z","4.1.0-c09ca9a":"2022-04-12T13:37:15.266Z","4.1.0":"2022-04-12T13:45:45.572Z","4.1.0-ec5c6f8":"2022-04-14T12:48:15.753Z","4.1.1-31ea14b":"2022-04-14T13:10:31.093Z","4.1.1":"2022-04-14T13:11:22.434Z","4.1.1-fe374c2":"2022-04-19T16:34:26.775Z","4.1.1-55e9dd3":"2022-04-21T09:39:11.763Z","4.1.1-c45d14c":"2022-04-21T09:49:54.575Z","4.1.1-9e7bc00":"2022-04-21T09:51:53.421Z","4.1.1-c43e2e4":"2022-04-22T10:53:06.612Z","4.1.1-c19f7ba":"2022-04-22T10:55:26.400Z","4.2.0-71091f2":"2022-04-22T11:15:06.033Z","4.2.0":"2022-04-22T11:16:11.617Z","4.2.0-ad16dbd":"2022-05-06T10:00:33.163Z","4.2.1-e9d156a":"2022-05-13T12:32:21.064Z","4.2.1":"2022-05-13T12:33:10.108Z","4.2.1-bb87d95":"2022-06-10T08:31:00.460Z","4.2.2-2963f14":"2022-06-10T10:25:47.503Z","4.2.2":"2022-06-10T10:26:37.519Z","4.2.3-2ed5272":"2022-07-20T08:08:10.741Z","4.2.3":"2022-07-20T08:09:01.223Z","4.2.4":"2022-07-25T14:29:50.078Z","5.0.0":"2022-08-02T12:23:06.100Z","5.0.1":"2022-08-03T10:23:47.110Z","5.0.2":"2022-08-10T11:51:26.371Z","5.0.3":"2022-08-11T15:32:09.678Z","6.0.0":"2022-08-15T14:38:38.359Z","6.0.1":"2022-08-22T11:35:04.914Z","6.1.0":"2022-08-30T12:48:17.028Z","6.1.1":"2022-09-05T12:38:52.119Z","6.1.2":"2022-09-12T15:58:49.775Z","6.1.3":"2022-09-13T11:17:20.851Z","6.1.4":"2022-09-22T12:04:04.603Z","6.2.0":"2022-09-29T14:07:35.766Z","6.2.1":"2022-10-28T08:42:12.981Z","6.2.2":"2022-11-09T08:48:19.442Z","6.2.3":"2023-03-21T08:32:12.095Z","7.0.0":"2023-05-29T10:49:07.724Z"},"maintainers":[{"email":"jhdzmar@gmail.com","name":"jesushernandez"},{"email":"mathiasvagni@googlemail.com","name":"mattvagni"}],"repository":{"url":"git+https://github.com/team-plain/react-chat-ui.git","type":"git"},"license":"MIT","homepage":"https://github.com/team-plain/react-chat-ui#readme","bugs":{"url":"https://github.com/team-plain/react-chat-ui/issues"},"readme":"# Plain React Chat UI\n\nThis package provides everything you need to add Plain's chat capabilities to your React website.\n\nIn order to use the 'Plain React Chat UI', you need to sign up with **Plain** at [https://www.plain.com](https://www.plain.com).\n\nPlease refer to [our documentation](https://docs.plain.com/support-channels/chat/overview) to learn how to integrate the\nchat UI in your website.\n\n## What's included in this package?\n\n- A `Chat` component which renders the Plain chat.\n- A custom `usePlain` hook which exposes a function to log out and the number of unread messages for the customer.\n- The `PlainProvider` which provides context for the `Chat` component and the `usePlain` hook.\n\n## Reference\n\n- [PlainProvider](#plainprovider)\n    - [appKey](#appkey)\n    - [customer](#customer)\n    - [theme](#theme)\n- [Chat](#chat)\n- [usePlain()](#useplain)\n\n### `PlainProvider`\n\nThe `PlainProvider` is the required context provider for the `Chat` component and the `usePlain` hook.\n\n#### `appKey`\n\nRequired prop. Used to specify which workspace your chat is for. Learn how to get an app key\nin [our documentation](https://docs.plain.com/support-channels/chat/app-key).\n\n#### `customer`\n\nOptional prop. This is how you specify which kind of customer is currently using your app.\n\nIn the case of a logged-out customer you can provide an object which matches this type. If the customer prop is not\nprovided this is the default.\n\n```tsx\ntype LoggedOutCustomer = {\n  type: 'logged-out';\n};\n```\n\nIf you have a logged-in customer you should provide an object which matches this type:\n\n```tsx\ntype LoggedInCustomer = {\n  type: 'logged-in';\n  getCustomerJwt: () => Promise<string>;\n};\n```\n\n`getCustomerJwt` should return a JWT signed with the private key whose public key you uploaded to Plain. Learn more on\nthis function in [our documentation](https://docs.plain.com/support-channels/chat/logged-in#2-creating-customer-jwts).\n\n#### `theme`\n\nThrough the `theme` prop, you can incrementally adopt a custom theme for your chat UI. If any values not provided by\nyour custom theme will fall back to the `defaultTheme` which you can import from `@team-plain/react-chat-ui`.\n\nFor those using Typescript, the type `ThemeConfig` is available from `@team-plain/react-chat-ui`.\n\n<br />\n\n### `Chat`\n\nThe component which renders the chat UI. It can be used anywhere within the `PlainProvider`. It will take the full width\nof its parents.\n\n<br />\n\n### `usePlain()`\n\nThis hook can be used anywhere within the `PlainProvider`. It returns:\n\n- `logout`: a function you can call when you need to log the customer out and reset any state within the chat\n- `notificationsCount`: a number which is the current number of unread messages a customer has. You can use this to\n  render custom badges and such.\n","readmeFilename":"readme.md"}