@dxos/plugin-thread 0.6.10-main.e92b5eb → 0.6.10-staging.7621a6e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-thread/src/meta.tsx":{"bytes":2229,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx":{"bytes":2595,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/command-extension.ts":{"bytes":3671,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/useStatus.ts":{"bytes":3661,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/analytics.ts":{"bytes":4347,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/index.ts":{"bytes":602,"imports":[{"path":"packages/plugins/plugin-thread/src/hooks/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/plugins/plugin-thread/src/hooks/analytics.ts","kind":"import-statement","original":"./analytics"}],"format":"esm"},"packages/plugins/plugin-thread/src/util.ts":{"bytes":3056,"imports":[{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/components/MessageContainer.tsx":{"bytes":24068,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/CommentContainer.tsx":{"bytes":25497,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx":{"bytes":11717,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/CommentContainer.tsx","kind":"import-statement","original":"./CommentContainer"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ChatContainer.tsx":{"bytes":18635,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadMain.tsx":{"bytes":2735,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx":{"bytes":1740,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/index.ts":{"bytes":1898,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx","kind":"import-statement","original":"./ThreadSettings"},{"path":"packages/plugins/plugin-thread/src/components/CommentContainer.tsx","kind":"import-statement","original":"./CommentContainer"},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx","kind":"import-statement","original":"./CommentsContainer"},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"},{"path":"packages/plugins/plugin-thread/src/components/ThreadMain.tsx","kind":"dynamic-import","original":"./ThreadMain"},{"path":"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx","kind":"dynamic-import","original":"./ThreadArticle"}],"format":"esm"},"packages/plugins/plugin-thread/src/translations.ts":{"bytes":4946,"imports":[{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/types.ts":{"bytes":2935,"imports":[{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/ThreadPlugin.tsx":{"bytes":115173,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-thread/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-thread/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-thread/src/index.ts":{"bytes":948,"imports":[{"path":"packages/plugins/plugin-thread/src/ThreadPlugin.tsx","kind":"import-statement","original":"./ThreadPlugin"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/plugins/plugin-thread/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-thread/src/ThreadPlugin.tsx","kind":"import-statement","original":"./ThreadPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-thread/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":74865},"packages/plugins/plugin-thread/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-CQ2RYETH.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-VV7MGQZJ.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-J4VCLPMS.mjs","kind":"dynamic-import"}],"exports":["ThreadAction","ThreadPlugin","default","useAnalyticsCallback","useOnEditAnalytics","useStatus"],"entryPoint":"packages/plugins/plugin-thread/src/index.ts","inputs":{"packages/plugins/plugin-thread/src/ThreadPlugin.tsx":{"bytesInOutput":29912},"packages/plugins/plugin-thread/src/components/index.ts":{"bytesInOutput":180},"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx":{"bytesInOutput":556},"packages/plugins/plugin-thread/src/components/CommentContainer.tsx":{"bytesInOutput":6654},"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx":{"bytesInOutput":2728},"packages/plugins/plugin-thread/src/translations.ts":{"bytesInOutput":1495},"packages/plugins/plugin-thread/src/index.ts":{"bytesInOutput":32}},"bytes":42590},"packages/plugins/plugin-thread/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-thread/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["THREAD_ITEM","THREAD_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-thread/src/meta.tsx","inputs":{},"bytes":191},"packages/plugins/plugin-thread/dist/lib/browser/types.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-thread/dist/lib/browser/types.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["ThreadAction"],"entryPoint":"packages/plugins/plugin-thread/src/types.ts","inputs":{},"bytes":148},"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1535},"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["ThreadAction"],"inputs":{"packages/plugins/plugin-thread/src/types.ts":{"bytesInOutput":589}},"bytes":765},"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-VV7MGQZJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1392},"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-VV7MGQZJ.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-CQ2RYETH.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-thread/src/components/ThreadMain.tsx","inputs":{"packages/plugins/plugin-thread/src/components/ThreadMain.tsx":{"bytesInOutput":536}},"bytes":781},"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-J4VCLPMS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":852},"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-J4VCLPMS.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-CQ2RYETH.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx","inputs":{"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx":{"bytesInOutput":271}},"bytes":525},"packages/plugins/plugin-thread/dist/lib/browser/chunk-CQ2RYETH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":30202},"packages/plugins/plugin-thread/dist/lib/browser/chunk-CQ2RYETH.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ChatContainer","ChatHeading","MessageContainer","command","getMessageMetadata","useAnalyticsCallback","useOnEditAnalytics","useStatus"],"inputs":{"packages/plugins/plugin-thread/src/hooks/useStatus.ts":{"bytesInOutput":748},"packages/plugins/plugin-thread/src/hooks/analytics.ts":{"bytesInOutput":975},"packages/plugins/plugin-thread/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-thread/src/components/ChatContainer.tsx":{"bytesInOutput":4595},"packages/plugins/plugin-thread/src/components/MessageContainer.tsx":{"bytesInOutput":6313},"packages/plugins/plugin-thread/src/components/command-extension.ts":{"bytesInOutput":711},"packages/plugins/plugin-thread/src/util.ts":{"bytesInOutput":563}},"bytes":14688},"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1078},"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["THREAD_ITEM","THREAD_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-thread/src/meta.tsx":{"bytesInOutput":509}},"bytes":660}}}
1
+ {"inputs":{"packages/plugins/plugin-thread/src/meta.tsx":{"bytes":2229,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx":{"bytes":2595,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/command-extension.ts":{"bytes":3679,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/useStatus.ts":{"bytes":3661,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/analytics.ts":{"bytes":4347,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/hooks/index.ts":{"bytes":602,"imports":[{"path":"packages/plugins/plugin-thread/src/hooks/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/plugins/plugin-thread/src/hooks/analytics.ts","kind":"import-statement","original":"./analytics"}],"format":"esm"},"packages/plugins/plugin-thread/src/util.ts":{"bytes":3056,"imports":[{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-thread/src/components/MessageContainer.tsx":{"bytes":24068,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/CommentContainer.tsx":{"bytes":25497,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx":{"bytes":11725,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/CommentContainer.tsx","kind":"import-statement","original":"./CommentContainer"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ChatContainer.tsx":{"bytes":18635,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/command-extension.ts","kind":"import-statement","original":"./command-extension"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-thread/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadMain.tsx":{"bytes":2735,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx":{"bytes":1740,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"}],"format":"esm"},"packages/plugins/plugin-thread/src/components/index.ts":{"bytes":1898,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx","kind":"import-statement","original":"./ThreadSettings"},{"path":"packages/plugins/plugin-thread/src/components/CommentContainer.tsx","kind":"import-statement","original":"./CommentContainer"},{"path":"packages/plugins/plugin-thread/src/components/MessageContainer.tsx","kind":"import-statement","original":"./MessageContainer"},{"path":"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx","kind":"import-statement","original":"./CommentsContainer"},{"path":"packages/plugins/plugin-thread/src/components/ChatContainer.tsx","kind":"import-statement","original":"./ChatContainer"},{"path":"packages/plugins/plugin-thread/src/components/ThreadMain.tsx","kind":"dynamic-import","original":"./ThreadMain"},{"path":"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx","kind":"dynamic-import","original":"./ThreadArticle"}],"format":"esm"},"packages/plugins/plugin-thread/src/translations.ts":{"bytes":4946,"imports":[{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/types.ts":{"bytes":2935,"imports":[{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-thread/src/ThreadPlugin.tsx":{"bytes":115173,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-thread/src/meta.tsx","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-thread/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-thread/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-thread/src/index.ts":{"bytes":948,"imports":[{"path":"packages/plugins/plugin-thread/src/ThreadPlugin.tsx","kind":"import-statement","original":"./ThreadPlugin"},{"path":"packages/plugins/plugin-thread/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/plugins/plugin-thread/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-thread/src/ThreadPlugin.tsx","kind":"import-statement","original":"./ThreadPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-thread/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":74869},"packages/plugins/plugin-thread/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-P7ZE5N5M.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-ZDCRC6RG.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-O64ZECMF.mjs","kind":"dynamic-import"}],"exports":["ThreadAction","ThreadPlugin","default","useAnalyticsCallback","useOnEditAnalytics","useStatus"],"entryPoint":"packages/plugins/plugin-thread/src/index.ts","inputs":{"packages/plugins/plugin-thread/src/ThreadPlugin.tsx":{"bytesInOutput":29912},"packages/plugins/plugin-thread/src/components/index.ts":{"bytesInOutput":180},"packages/plugins/plugin-thread/src/components/ThreadSettings.tsx":{"bytesInOutput":556},"packages/plugins/plugin-thread/src/components/CommentContainer.tsx":{"bytesInOutput":6654},"packages/plugins/plugin-thread/src/components/CommentsContainer.tsx":{"bytesInOutput":2732},"packages/plugins/plugin-thread/src/translations.ts":{"bytesInOutput":1495},"packages/plugins/plugin-thread/src/index.ts":{"bytesInOutput":32}},"bytes":42594},"packages/plugins/plugin-thread/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-thread/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["THREAD_ITEM","THREAD_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-thread/src/meta.tsx","inputs":{},"bytes":191},"packages/plugins/plugin-thread/dist/lib/browser/types.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-thread/dist/lib/browser/types.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["ThreadAction"],"entryPoint":"packages/plugins/plugin-thread/src/types.ts","inputs":{},"bytes":148},"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1535},"packages/plugins/plugin-thread/dist/lib/browser/chunk-TL3JITN7.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"}],"exports":["ThreadAction"],"inputs":{"packages/plugins/plugin-thread/src/types.ts":{"bytesInOutput":589}},"bytes":765},"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-ZDCRC6RG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1392},"packages/plugins/plugin-thread/dist/lib/browser/ThreadMain-ZDCRC6RG.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-P7ZE5N5M.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-thread/src/components/ThreadMain.tsx","inputs":{"packages/plugins/plugin-thread/src/components/ThreadMain.tsx":{"bytesInOutput":536}},"bytes":781},"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-O64ZECMF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":852},"packages/plugins/plugin-thread/dist/lib/browser/ThreadArticle-O64ZECMF.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-P7ZE5N5M.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx","inputs":{"packages/plugins/plugin-thread/src/components/ThreadArticle.tsx":{"bytesInOutput":271}},"bytes":525},"packages/plugins/plugin-thread/dist/lib/browser/chunk-P7ZE5N5M.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":30206},"packages/plugins/plugin-thread/dist/lib/browser/chunk-P7ZE5N5M.mjs":{"imports":[{"path":"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-thread","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ChatContainer","ChatHeading","MessageContainer","command","getMessageMetadata","useAnalyticsCallback","useOnEditAnalytics","useStatus"],"inputs":{"packages/plugins/plugin-thread/src/hooks/useStatus.ts":{"bytesInOutput":748},"packages/plugins/plugin-thread/src/hooks/analytics.ts":{"bytesInOutput":975},"packages/plugins/plugin-thread/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-thread/src/components/ChatContainer.tsx":{"bytesInOutput":4595},"packages/plugins/plugin-thread/src/components/MessageContainer.tsx":{"bytesInOutput":6313},"packages/plugins/plugin-thread/src/components/command-extension.ts":{"bytesInOutput":715},"packages/plugins/plugin-thread/src/util.ts":{"bytesInOutput":563}},"bytes":14692},"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1078},"packages/plugins/plugin-thread/dist/lib/browser/chunk-5IBJO53M.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["THREAD_ITEM","THREAD_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-thread/src/meta.tsx":{"bytesInOutput":509}},"bytes":660}}}
@@ -26,19 +26,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ThreadArticle_CSENFNNT_exports = {};
30
- __export(ThreadArticle_CSENFNNT_exports, {
29
+ var ThreadArticle_DO56JXBU_exports = {};
30
+ __export(ThreadArticle_DO56JXBU_exports, {
31
31
  default: () => ThreadArticle_default
32
32
  });
33
- module.exports = __toCommonJS(ThreadArticle_CSENFNNT_exports);
34
- var import_chunk_3VAAUEU5 = require("./chunk-3VAAUEU5.cjs");
33
+ module.exports = __toCommonJS(ThreadArticle_DO56JXBU_exports);
34
+ var import_chunk_5PZNPPQF = require("./chunk-5PZNPPQF.cjs");
35
35
  var import_chunk_BWBONZGU = require("./chunk-BWBONZGU.cjs");
36
36
  var import_react = __toESM(require("react"));
37
37
  var ThreadArticle = (props) => {
38
38
  return /* @__PURE__ */ import_react.default.createElement("div", {
39
39
  role: "none",
40
40
  className: "row-span-2"
41
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_3VAAUEU5.ChatContainer, props));
41
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_5PZNPPQF.ChatContainer, props));
42
42
  };
43
43
  var ThreadArticle_default = ThreadArticle;
44
- //# sourceMappingURL=ThreadArticle-CSENFNNT.cjs.map
44
+ //# sourceMappingURL=ThreadArticle-DO56JXBU.cjs.map
@@ -26,12 +26,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ThreadMain_XP4YSF7U_exports = {};
30
- __export(ThreadMain_XP4YSF7U_exports, {
29
+ var ThreadMain_XJX75GHG_exports = {};
30
+ __export(ThreadMain_XJX75GHG_exports, {
31
31
  default: () => ThreadMain_default
32
32
  });
33
- module.exports = __toCommonJS(ThreadMain_XP4YSF7U_exports);
34
- var import_chunk_3VAAUEU5 = require("./chunk-3VAAUEU5.cjs");
33
+ module.exports = __toCommonJS(ThreadMain_XJX75GHG_exports);
34
+ var import_chunk_5PZNPPQF = require("./chunk-5PZNPPQF.cjs");
35
35
  var import_chunk_BWBONZGU = require("./chunk-BWBONZGU.cjs");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_react_ui = require("@dxos/react-ui");
@@ -44,9 +44,9 @@ var ThreadMain = ({ thread }) => {
44
44
  import_react_ui_theme.topbarBlockPaddingStart,
45
45
  import_react_ui_theme.bottombarBlockPaddingEnd
46
46
  ]
47
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_3VAAUEU5.ChatContainer, {
47
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_5PZNPPQF.ChatContainer, {
48
48
  thread
49
49
  }));
50
50
  };
51
51
  var ThreadMain_default = ThreadMain;
52
- //# sourceMappingURL=ThreadMain-XP4YSF7U.cjs.map
52
+ //# sourceMappingURL=ThreadMain-XJX75GHG.cjs.map
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_3VAAUEU5_exports = {};
30
- __export(chunk_3VAAUEU5_exports, {
29
+ var chunk_5PZNPPQF_exports = {};
30
+ __export(chunk_5PZNPPQF_exports, {
31
31
  ChatContainer: () => ChatContainer,
32
32
  ChatHeading: () => ChatHeading,
33
33
  MessageContainer: () => MessageContainer,
@@ -37,7 +37,7 @@ __export(chunk_3VAAUEU5_exports, {
37
37
  useOnEditAnalytics: () => useOnEditAnalytics,
38
38
  useStatus: () => useStatus
39
39
  });
40
- module.exports = __toCommonJS(chunk_3VAAUEU5_exports);
40
+ module.exports = __toCommonJS(chunk_5PZNPPQF_exports);
41
41
  var import_chunk_BWBONZGU = require("./chunk-BWBONZGU.cjs");
42
42
  var import_react = require("react");
43
43
  var import_react2 = require("react");
@@ -153,7 +153,7 @@ var styles = import_language.HighlightStyle.define([
153
153
  tag: import_react_ui_editor3.tags.tagName,
154
154
  class: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.tagRoot)({
155
155
  palette: "cyan"
156
- }), "text-base font-medium")
156
+ }), "text-baseText font-medium")
157
157
  }
158
158
  ]);
159
159
  var command = [
@@ -428,4 +428,4 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
428
428
  useOnEditAnalytics,
429
429
  useStatus
430
430
  });
431
- //# sourceMappingURL=chunk-3VAAUEU5.cjs.map
431
+ //# sourceMappingURL=chunk-5PZNPPQF.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts", "../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts", "../../../src/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/echo-schema';\nimport { ObservabilityAction } from '@dxos/plugin-observability/meta';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const dispatch = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch({\n action: ObservabilityAction.SEND_EVENT,\n data: {\n name,\n properties: { ...meta, ...dynamicMeta, spaceId },\n },\n });\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (message: ReactiveObject<any>, editing: boolean) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: message.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Chat } from '@phosphor-icons/react';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { create } from '@dxos/echo-schema';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { PlankHeading, plankHeadingIconProps } from '@dxos/react-ui-deck';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <PlankHeading.Button attendableId={attendableId}>\n <Chat {...plankHeadingIconProps} />\n </PlankHeading.Button>\n <PlankHeading.Label attendableId={attendableId}>{t('chat heading')}</PlankHeading.Label>\n </div>\n );\n};\n\nexport const ChatContainer = ({ thread, context, current, autoFocusTextbox }: ThreadContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(thread);\n const members = useMembers(space?.key);\n const activity = useStatus(space, thread.id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(thread.id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n create(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: messageRef.current,\n context,\n }),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n const handleDelete = (id: string) => {\n const messageIndex = thread.messages.filter(nonNullable).findIndex((message) => message.id === id);\n if (messageIndex !== -1) {\n thread.messages.splice(messageIndex, 1);\n }\n };\n\n return (\n <Thread\n current={current}\n id={thread.id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages.filter(nonNullable).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} onDelete={handleDelete} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type Expando, type EchoReactiveObject } from '@dxos/echo-schema';\nimport { type MessageType } from '@dxos/plugin-space/types';\nimport { PublicKey } from '@dxos/react-client';\nimport { type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport {\n Button,\n ButtonGroup,\n DensityProvider,\n Tooltip,\n useOnTransition,\n useThemeContext,\n useTranslation,\n} from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport { Mosaic, type MosaicTileComponent } from '@dxos/react-ui-mosaic';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_ITEM, THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nconst messageControlClassNames = ['p-1 min-bs-0 transition-opacity items-start', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={handleDelete}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n <TextboxBlock message={message} isAuthor={userIsAuthor} editing={editing} />\n {message.parts?.filter(nonNullable).map((part, index) => <MessagePart key={index} part={part} />)}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return (\n <Mosaic.Container id={part.id}>\n <Mosaic.DraggableTile type={THREAD_ITEM} path={part.id} item={part} Component={MessageBlockObjectTile} />\n </Mosaic.Container>\n );\n};\n\nconst TextboxBlock = ({\n message,\n isAuthor,\n editing,\n}: {\n message: MessageType;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(message.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n message.text = inMemoryContentRef.current;\n }, [message]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: message.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [message.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n useOnEditAnalytics(message, !!editing);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile: MosaicTileComponent<EchoReactiveObject<any>> = forwardRef(\n ({ draggableStyle, draggableProps, item, active, ...props }, forwardedRef) => {\n let title = item.name ?? item.title ?? item.__typename ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n style={draggableStyle}\n ref={forwardedRef}\n >\n <DensityProvider density='fine'>\n <Surface\n role='card'\n limit={1}\n data={{ content: item }}\n draggableProps={draggableProps}\n fallback={title}\n {...props}\n />\n </DensityProvider>\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx, tagRoot } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n {\n tag: tags.tagName,\n class: mx(tagRoot({ palette: 'cyan' }), 'text-base font-medium'),\n },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/echo-schema';\nimport { ObservabilityAction } from '@dxos/plugin-observability/meta';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const dispatch = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch({\n action: ObservabilityAction.SEND_EVENT,\n data: {\n name,\n properties: { ...meta, ...dynamicMeta, spaceId },\n },\n });\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (message: ReactiveObject<any>, editing: boolean) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: message.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Chat } from '@phosphor-icons/react';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { create } from '@dxos/echo-schema';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { PlankHeading, plankHeadingIconProps } from '@dxos/react-ui-deck';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <PlankHeading.Button attendableId={attendableId}>\n <Chat {...plankHeadingIconProps} />\n </PlankHeading.Button>\n <PlankHeading.Label attendableId={attendableId}>{t('chat heading')}</PlankHeading.Label>\n </div>\n );\n};\n\nexport const ChatContainer = ({ thread, context, current, autoFocusTextbox }: ThreadContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(thread);\n const members = useMembers(space?.key);\n const activity = useStatus(space, thread.id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(thread.id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n create(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: messageRef.current,\n context,\n }),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n const handleDelete = (id: string) => {\n const messageIndex = thread.messages.filter(nonNullable).findIndex((message) => message.id === id);\n if (messageIndex !== -1) {\n thread.messages.splice(messageIndex, 1);\n }\n };\n\n return (\n <Thread\n current={current}\n id={thread.id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages.filter(nonNullable).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} onDelete={handleDelete} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type Expando, type EchoReactiveObject } from '@dxos/echo-schema';\nimport { type MessageType } from '@dxos/plugin-space/types';\nimport { PublicKey } from '@dxos/react-client';\nimport { type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport {\n Button,\n ButtonGroup,\n DensityProvider,\n Tooltip,\n useOnTransition,\n useThemeContext,\n useTranslation,\n} from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport { Mosaic, type MosaicTileComponent } from '@dxos/react-ui-mosaic';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_ITEM, THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nconst messageControlClassNames = ['p-1 min-bs-0 transition-opacity items-start', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={handleDelete}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n <TextboxBlock message={message} isAuthor={userIsAuthor} editing={editing} />\n {message.parts?.filter(nonNullable).map((part, index) => <MessagePart key={index} part={part} />)}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return (\n <Mosaic.Container id={part.id}>\n <Mosaic.DraggableTile type={THREAD_ITEM} path={part.id} item={part} Component={MessageBlockObjectTile} />\n </Mosaic.Container>\n );\n};\n\nconst TextboxBlock = ({\n message,\n isAuthor,\n editing,\n}: {\n message: MessageType;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(message.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n message.text = inMemoryContentRef.current;\n }, [message]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: message.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [message.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n useOnEditAnalytics(message, !!editing);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile: MosaicTileComponent<EchoReactiveObject<any>> = forwardRef(\n ({ draggableStyle, draggableProps, item, active, ...props }, forwardedRef) => {\n let title = item.name ?? item.title ?? item.__typename ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n style={draggableStyle}\n ref={forwardedRef}\n >\n <DensityProvider density='fine'>\n <Surface\n role='card'\n limit={1}\n data={{ content: item }}\n draggableProps={draggableProps}\n fallback={title}\n {...props}\n />\n </DensityProvider>\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx, tagRoot } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n {\n tag: tags.tagName,\n class: mx(tagRoot({ palette: 'cyan' }), 'text-baseText font-medium'),\n },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAoC;ACApC,IAAAA,gBAA4B;AAE5B,2BAAoC;AAEpC,kBAAoC;AACpC,kBAAyB;AACzB,sBAAgC;ACNhC,IAAAA,gBAAqB;AACrB,IAAAA,gBAAkE;AAElE,yBAAuB;AACvB,mBAA4B;AAC5B,IAAAC,eAAqC;AACrC,kBAA4B;AAC5B,IAAAC,mBAA4D;AAC5D,2BAAoD;AACpD,6BAAuE;AACvE,4BAAmB;AACnB,6BAA6F;AAC7F,kBAA4B;ACb5B,kBAA2B;AAC3B,IAAAF,gBAAuC;AACvC,IAAAA,gBAA4E;AAE5E,IAAAG,wBAAwB;AAGxB,0BAA0B;AAE1B,IAAAC,eAA2C;AAC3C,IAAAF,mBAQO;AACP,IAAAG,0BAA4E;AAC5E,6BAAiD;AACjD,IAAAC,yBAMO;AACP,IAAAC,0BAA4C;AAC5C,IAAAC,eAA4B;AC5B5B,sBAAmE;AAGnE,IAAAH,0BAAqB;AACrB,IAAAC,yBAA4B;ACJ5B,0BAA6B;AAI7B,IAAAE,eAA8B;ALCvB,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,QAAiBC,uBAAS,KAAA;AAC7CC,8BAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;AC1BO,IAAMiB,uBAAuB,CAACC,SAA6BC,MAAcC,SAAAA;AAC9E,QAAMC,eAAWC,0CAAAA;AAEjB,aAAOC,2BACL,CAACC,gBAAAA;AACC,SAAKH,SAAS;MACZI,QAAQC,gCAAoBC;MAC5BC,MAAM;QACJT;QACAU,YAAY;UAAE,GAAGT;UAAM,GAAGI;UAAaN;QAAQ;MACjD;IACF,CAAA;EACF,GACA;IAACG;IAAUF;IAAMC;IAAMF;GAAQ;AAEnC;AAEO,IAAMY,qBAAqB,CAACC,SAA8BC,YAAAA;AAC/D,QAAMlC,YAAQmC,sBAASF,OAAAA;AAEvB,QAAMG,kBAAkBjB,qBAAqBnB,OAAOqC,IAAI,0BAA0B;IAChFC,WAAWL,QAAQI;IACnBE,eAAeN,QAAQO,KAAKC;EAC9B,CAAA;AAEAC,uCAAgBR,SAAS,MAAM,OAAOE,eAAAA;AACxC;AGzBA,IAAMO,SAASC,+BAAeC,OAA0B;EACtDC,YAAY,OAAO;IAAEC,OAAO;EAAE;EAC9BC,OAAO,CAACC,QAAQC,UAAAA;AACdA,UAAMH;AACN,QAAIE,OAAOE,SAAQ,GAAI;AACrB,aAAO;IACT;AACA,QAAID,MAAMH,UAAU,KAAKE,OAAOG,MAAM,UAAA,GAAa;AACjD,aAAO;IACT;AACAH,WAAOI,KAAI;AACX,WAAO;EACT;AACF,CAAA;AAEA,IAAMC,SAASC,+BAAeV,OAAO;EACnC;IACEW,KAAKC,6BAAKC;IACVC,WAAOC,+BAAGC,gCAAQ;MAAEC,SAAS;IAAO,CAAA,GAAI,2BAAA;EAC1C;CACD;AAEM,IAAMC,UAAqB;EAACpB;MAAQqB,oCAAmBV,MAAAA;;ACvBvD,IAAMW,qBAAqB,CAAC5B,IAAY6B,aAAAA;AAC7C,QAAMC,eAAWC,4BAAcF,UAAUG,YAAYC,MAAAA,KAAW,GAAA;AAChE,SAAO;IACLjC;IACAkC,UAAUL,UAAUG,YAAYC,MAAAA;IAChCE,YACEN,UAAUO,SAASC,gBAClBR,UAAUG,kBAAcM,kCAAaT,SAASG,YAAYC,MAAK,CAAA,IAAMrD;IACxE2D,mBAAmB;MACjBC,KAAKX,UAAUO,SAAS3C,MAAM+C,OAAOV,SAASU;MAC9CC,OAAOZ,UAAUO,SAAS3C,MAAMgD,SAASX,SAASW;IACpD;EACF;AACF;AFcA,IAAMC,2BAA2B;EAAC;EAA+CC;;AAE1E,IAAMC,mBAAmB,CAAC,EAC/BhD,SACAiD,SACAC,SAAQ,MAKT;AACC,QAAMC,iBAAiBF,QAAQG,KAC7B,CAACC,WAAWrD,QAAQsD,OAAOlB,eAAemB,8BAAUC,OAAOH,OAAOpB,SAASG,aAAapC,QAAQsD,OAAOlB,WAAW,CAAA,GACjHH;AACH,QAAMwB,kBAAkBzB,mBAAmBhC,QAAQI,IAAI+C,cAAAA;AACvD,QAAMO,mBAAeC,0BAAAA,GAAevB,YAAYC,MAAAA,MAAYoB,gBAAgBnB;AAC5E,QAAM,CAACrC,SAAS2D,UAAAA,QAAczF,cAAAA,UAAS,KAAA;AACvC,QAAM0F,mBAAerE,cAAAA,aAAY,MAAM0D,WAAWlD,QAAQI,EAAE,GAAG;IAACJ;IAASkD;GAAS;AAClF,QAAM,EAAExE,EAAC,QAAKoF,iCAAeC,mCAAAA;AAC7B,QAAMC,YAAYtF,EAAEuB,UAAU,uBAAuB,oBAAA;AACrD,QAAMgE,cAAcvF,EAAE,sBAAA;AAEtB,SACE,8BAAAwF,QAAA,cAACC,qCAAAA;IAAa,GAAGV;IAAiBW,YAAY;MAACC;MAAmBC;;KAChE,8BAAAJ,QAAA,cAACK,wCAAAA;IAAehC,YAAYkB,gBAAgBlB;IAAYiC,WAAWf,gBAAgBe;KACjF,8BAAAN,QAAA,cAACO,8BAAAA;IAAYL,YAAW;KACrBV,gBACC,8BAAAQ,QAAA,cAACQ,yBAAQC,MAAI,MACX,8BAAAT,QAAA,cAACQ,yBAAQE,SAAO;IAACC,SAAAA;KACf,8BAAAX,QAAA,cAACY,yBAAAA;IACCC,SAAQ;IACRC,eAAa/E,UAAU,wBAAwB;IAC/CmE,YAAYtB;IACZmC,SAAS,MAAMrB,WAAW,CAAC3D,aAAY,CAACA,QAAAA;KAExC,8BAAAiE,QAAA,cAACgB,QAAAA;IAAKC,WAAU;KAAWnB,SAAAA,GAC1B/D,UAAU,8BAAAiE,QAAA,cAACkB,qBAAAA;IAAMD,eAAWE,gCAAQ,CAAA;OAAS,8BAAAnB,QAAA,cAACoB,4BAAAA;IAAaH,eAAWE,gCAAQ,CAAA;QAGnF,8BAAAnB,QAAA,cAACQ,yBAAQa,QAAM,MACb,8BAAArB,QAAA,cAACQ,yBAAQc,SAAO;IAACpB,YAAW;KACzBJ,WACD,8BAAAE,QAAA,cAACQ,yBAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,GAKrBvC,YACC,8BAAAgB,QAAA,cAACQ,yBAAQC,MAAI,MACX,8BAAAT,QAAA,cAACQ,yBAAQE,SAAO;IAACC,SAAAA;KACf,8BAAAX,QAAA,cAACY,yBAAAA;IACCC,SAAQ;IACRC,eAAY;IACZZ,YAAYtB;IACZmC,SAASpB;KAET,8BAAAK,QAAA,cAACgB,QAAAA;IAAKC,WAAU;KAAWlB,WAAAA,GAC3B,8BAAAC,QAAA,cAACwB,iBAAAA;IAAEP,eAAWE,gCAAQ,CAAA;QAG1B,8BAAAnB,QAAA,cAACQ,yBAAQa,QAAM,MACb,8BAAArB,QAAA,cAACQ,yBAAQc,SAAO;IAACpB,YAAW;KACzBH,aACD,8BAAAC,QAAA,cAACQ,yBAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO1B,8BAAAvB,QAAA,cAACyB,cAAAA;IAAa3F;IAAkB4F,UAAUlC;IAAczD;MACvDD,QAAQ6F,OAAOC,OAAOC,wBAAAA,EAAaC,IAAI,CAACC,MAAMC,UAAU,8BAAAhC,QAAA,cAACiC,aAAAA;IAAYC,KAAKF;IAAOD;;AAGxF;AAEA,IAAME,cAAc,CAAC,EAAEF,KAAI,MAAqB;AAC9C,SACE,8BAAA/B,QAAA,cAACmC,8BAAOC,WAAS;IAAClG,IAAI6F,KAAK7F;KACzB,8BAAA8D,QAAA,cAACmC,8BAAOE,eAAa;IAACC,MAAMC;IAAaC,MAAMT,KAAK7F;IAAIuG,MAAMV;IAAMW,WAAWC;;AAGrF;AAEA,IAAMlB,eAAe,CAAC,EACpB3F,SACA4F,UACA3F,QAAO,MAMR;AACC,QAAM,EAAE6G,UAAS,QAAKC,kCAAAA;AACtB,QAAMC,yBAAqBC,sBAAOjH,QAAQO,IAAI;AAE9C,QAAM2G,2BAAuB1H,cAAAA,aAAY,CAAC2H,aAAAA;AACxCH,uBAAmBI,UAAUD;EAC/B,GAAG,CAAA,CAAE;AAEL,QAAME,yBAAqB7H,cAAAA,aAAY,MAAA;AACrCQ,YAAQO,OAAOyG,mBAAmBI;EACpC,GAAG;IAACpH;GAAQ;AAEZS,uBAAAA,iBAAgBR,SAAS,MAAM,OAAOoH,kBAAAA;AAEtC,QAAM,EAAEC,WAAWC,iBAAiBC,KAAI,QAAKC,uCAC3C,OAAO;IACLC,cAAc1H,QAAQO;IACtBoH,YAAY;UACVC,+CAAsB;QAAEC,UAAU,CAACjC,YAAY,CAAC3F;MAAQ,CAAA;UACxD6H,+CAAsB;QAAEhB;MAAU,CAAA;MAClChF;MACAiG,uBAAWC,eAAeC,GAAG,CAACC,WAAAA;AAC5B,YAAIA,OAAOC,YAAY;AACrBjB,+BAAqBgB,OAAOjH,MAAMmH,IAAIC,SAAQ,CAAA;QAChD;MACF,CAAA;;EAEJ,IACA;IAACrI,QAAQO;IAAMN;IAAS2F;IAAUkB;IAAWI;GAAqB;AAGpE9I,oBAAAA,WAAU,MAAA;AACR6B,eAAWuH,MAAMc,MAAAA;EACnB,GAAG;IAACrI;IAASuH;GAAK;AAElBzH,qBAAmBC,SAAS,CAAC,CAACC,OAAAA;AAE9B,SAAO,8BAAAiE,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOC,KAAKnB;IAAWnC,WAAU;IAAS,GAAGoC;;AAChE;AAEA,IAAMV,yBAAuE6B,8CAC3E,CAAC,EAAEC,gBAAgBC,gBAAgBjC,MAAMkC,QAAQ,GAAGC,MAAAA,GAASC,iBAAAA;AAC3D,MAAIC,QAAQrC,KAAKvH,QAAQuH,KAAKqC,SAASrC,KAAKsC,cAAc;AAC1D,MAAI,OAAOD,UAAU,UAAU;AAC7BA,YAAQA,OAAOE,WAAW;EAC5B;AAEA,SACE,8BAAAhF,QAAA,cAACqE,OAAAA;IACCC,MAAK;IACLrD,eAAWxD,uBAAAA,IAAG,6BAA6B0C,0CAAmBC,qDAAAA;IAC9D6E,OAAOR;IACPF,KAAKM;KAEL,8BAAA7E,QAAA,cAACkF,kCAAAA;IAAgBC,SAAQ;KACvB,8BAAAnF,QAAA,cAACoF,+BAAAA;IACCd,MAAK;IACLe,OAAO;IACP1J,MAAM;MAAEqJ,SAASvC;IAAK;IACtBiC;IACA1G,UAAU8G;IACT,GAAGF;;AAKd,CAAA;AD7KK,IAAMU,cAAc,CAAC,EAAEC,aAAY,MAA6B;AACrE,QAAM,EAAE/K,EAAC,QAAKoF,iBAAAA,gBAAeC,mCAAAA;AAC7B,SACEG,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,WAAU;KACzBjB,8BAAAA,QAAA,cAACwF,kCAAa5E,QAAM;IAAC2E;KACnBvF,8BAAAA,QAAA,cAACyF,oBAASC,0CAAAA,CAAAA,GAEZ1F,8BAAAA,QAAA,cAACwF,kCAAaG,OAAK;IAACJ;KAA6B/K,EAAE,cAAA,CAAA,CAAA;AAGzD;AAEO,IAAMoL,gBAAgB,CAAC,EAAEC,QAAQC,SAAS5C,SAAS6C,iBAAgB,MAAwB;AAChG,QAAMhI,eAAW0B,YAAAA,aAAAA;AACjB,QAAM5F,YAAQmC,aAAAA,UAAS6J,MAAAA;AACvB,QAAM9G,cAAUiH,yBAAWnM,OAAOqI,GAAAA;AAClC,QAAM+D,WAAWrM,UAAUC,OAAOgM,OAAO3J,EAAE;AAC3C,QAAM,EAAE1B,EAAC,QAAKoF,iBAAAA,gBAAeC,mCAAAA;AAE7B,QAAM,CAACqG,QAAQC,SAAAA,QAAalM,cAAAA,UAAS,CAAA;AACrC,QAAMmM,iBAAiB,MAAMD,UAAU,CAACvJ,UAAUA,QAAQ,CAAA;AAC1D,QAAM,CAACyJ,WAAWC,YAAAA,QAAgBrM,cAAAA,UAAS8L,gBAAAA;AAC3C,QAAMQ,sBAAkBxD,cAAAA,QAA8B,IAAA;AACtD,QAAM,EAAEH,UAAS,QAAKC,iBAAAA,iBAAAA;AAEtB,QAAM2D,kBAAkB1I,mBAAmB+H,OAAO3J,IAAI6B,QAAAA;AACtD,QAAM0I,iBAAa1D,cAAAA,QAAO,EAAA;AAC1B,QAAMU,iBAAaiD,uBACjB,MAAM;QACJhD,uBAAAA,uBAAsB;MAAEiD,aAAanM,EAAE,qBAAA;IAAuB,CAAA;QAC9DoJ,uBAAAA,uBAAsB;MAAEhB;IAAU,CAAA;QAClCgE,iCAAS;MAAEC,UAAU,CAACxK,SAAUoK,WAAWvD,UAAU7G;IAAM,CAAA;IAC3DuB;KAEF;IAACgF;IAAWsD;GAAO;AAOrB,QAAMY,cAAc,CAACC,aACnBC,WAAW,MAAMT,gBAAgBrD,SAAS+D,eAAe;IAAEF;IAAUG,OAAO;EAAM,CAAA,GAAI,EAAA;AAExFC,qCAAgB,MAAA;AACdL,gBAAY,SAAA;EACd,GAAG,CAAA,CAAE;AAGL,QAAMM,eAA8C,MAAA;AAClD,QAAI,CAACX,WAAWvD,SAAS5G,QAAQ;AAC/B,aAAO;IACT;AAEAuJ,WAAOwB,SAASC,SACdC,2BAAOC,0BAAa;MAClBpI,QAAQ;QAAElB,aAAaH,SAASG,YAAYC,MAAK;MAAG;MACpDmC,YAAW,oBAAI1F,KAAAA,GAAO6M,YAAW;MACjCpL,MAAMoK,WAAWvD;MACjB4C;IACF,CAAA,CAAA;AAGFW,eAAWvD,UAAU;AACrBoD,iBAAa,IAAA;AACbQ,gBAAY,QAAA;AACZV,mBAAAA;AACA,WAAO;EACT;AAEA,QAAMzG,eAAe,CAACzD,OAAAA;AACpB,UAAMwL,eAAe7B,OAAOwB,SAASzF,OAAOC,YAAAA,WAAAA,EAAa8F,UAAU,CAAC7L,YAAYA,QAAQI,OAAOA,EAAAA;AAC/F,QAAIwL,iBAAiB,IAAI;AACvB7B,aAAOwB,SAASO,OAAOF,cAAc,CAAA;IACvC;EACF;AAEA,SACE1H,8BAAAA,QAAA,cAAC6H,+BAAAA;IACC3E;IACAhH,IAAI2J,OAAO3J;IACXgE,YAAW;KAEXF,8BAAAA,QAAA,cAAC8H,4BAAWrH,MAAI;IAACP,YAAW;KAC1BF,8BAAAA,QAAA,cAAC8H,4BAAWC,UAAQ;IAAC7H,YAAW;KAC9BF,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,eAAWxD,sBAAAA,IAAGuK,qCAAc,gBAAA;KAC1CnC,OAAOwB,SAASzF,OAAOC,YAAAA,WAAAA,EAAaC,IAAI,CAAChG,YACxCkE,8BAAAA,QAAA,cAAClB,kBAAAA;IAAiBoD,KAAKpG,QAAQI;IAAIJ;IAAkBiD;IAAkBC,UAAUW;QAIrFK,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,WAAU;IAAgBsD,KAAKgC;MAChDvG,8BAAAA,QAAA,cAAC8H,4BAAWG,WAAS,MACnBjI,8BAAAA,QAAA,cAAC8H,4BAAWI,OAAK,IAAA,CAAA,CAAA,CAAA,GAIvBlI,8BAAAA,QAAA,cAACmI,uCAAAA;IAAe1E;IAAwB4C;IAAsB+B,QAAQhB;IAAe,GAAGZ;MACxFxG,8BAAAA,QAAA,cAACqI,qCAAAA;IAAapC;KAAqBzL,EAAE,kBAAA,CAAA,CAAA;AAG3C;",
6
6
  "names": ["import_react", "import_echo", "import_react_ui", "import_app_framework", "import_halo", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "import_util", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "action", "ObservabilityAction", "SEND_EVENT", "data", "properties", "useOnEditAnalytics", "message", "editing", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "tagRoot", "palette", "command", "syntaxHighlighting", "getMessageMetadata", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "authorAvatarProps", "hue", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "members", "onDelete", "senderIdentity", "find", "member", "sender", "PublicKey", "equals", "messageMetadata", "userIsAuthor", "useIdentity", "setEditing", "handleDelete", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "parts", "filter", "nonNullable", "map", "part", "index", "MessagePart", "key", "Mosaic", "Container", "DraggableTile", "type", "THREAD_ITEM", "path", "item", "Component", "MessageBlockObjectTile", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "handleDocumentChange", "newState", "current", "saveDocumentChange", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "focus", "div", "role", "ref", "forwardRef", "draggableStyle", "draggableProps", "active", "props", "forwardedRef", "title", "__typename", "content", "style", "DensityProvider", "density", "Surface", "limit", "ChatHeading", "attendableId", "PlankHeading", "Chat", "plankHeadingIconProps", "Label", "ChatContainer", "thread", "context", "autoFocusTextbox", "useMembers", "activity", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "messages", "push", "create", "MessageType", "toISOString", "messageIndex", "findIndex", "splice", "Thread", "ScrollArea", "Viewport", "threadLayout", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
7
7
  }
@@ -31,13 +31,13 @@ __export(node_exports, {
31
31
  ThreadAction: () => import_chunk_WPPLQNMJ.ThreadAction,
32
32
  ThreadPlugin: () => ThreadPlugin,
33
33
  default: () => src_default,
34
- useAnalyticsCallback: () => import_chunk_3VAAUEU5.useAnalyticsCallback,
35
- useOnEditAnalytics: () => import_chunk_3VAAUEU5.useOnEditAnalytics,
36
- useStatus: () => import_chunk_3VAAUEU5.useStatus
34
+ useAnalyticsCallback: () => import_chunk_5PZNPPQF.useAnalyticsCallback,
35
+ useOnEditAnalytics: () => import_chunk_5PZNPPQF.useOnEditAnalytics,
36
+ useStatus: () => import_chunk_5PZNPPQF.useStatus
37
37
  });
38
38
  module.exports = __toCommonJS(node_exports);
39
39
  var import_chunk_WPPLQNMJ = require("./chunk-WPPLQNMJ.cjs");
40
- var import_chunk_3VAAUEU5 = require("./chunk-3VAAUEU5.cjs");
40
+ var import_chunk_5PZNPPQF = require("./chunk-5PZNPPQF.cjs");
41
41
  var import_chunk_BWBONZGU = require("./chunk-BWBONZGU.cjs");
42
42
  var import_react = require("@phosphor-icons/react");
43
43
  var import_signals_core = require("@preact/signals-core");
@@ -138,12 +138,12 @@ var CommentContainer = ({ thread, detached, context, current, autoFocusTextbox,
138
138
  const identity = (0, import_halo.useIdentity)();
139
139
  const space = (0, import_echo2.getSpace)(thread);
140
140
  const members = (0, import_echo2.useMembers)(space?.key);
141
- const activity = (0, import_chunk_3VAAUEU5.useStatus)(space, thread.id);
141
+ const activity = (0, import_chunk_5PZNPPQF.useStatus)(space, thread.id);
142
142
  const { t } = (0, import_react_ui3.useTranslation)(import_chunk_BWBONZGU.THREAD_PLUGIN);
143
143
  const threadScrollRef = (0, import_react6.useRef)(null);
144
144
  const [autoFocus, setAutoFocus] = (0, import_react6.useState)(!!autoFocusTextbox);
145
145
  const { themeMode } = (0, import_react_ui3.useThemeContext)();
146
- const textboxMetadata = (0, import_chunk_3VAAUEU5.getMessageMetadata)(thread.id, identity);
146
+ const textboxMetadata = (0, import_chunk_5PZNPPQF.getMessageMetadata)(thread.id, identity);
147
147
  const [_count, _setCount] = (0, import_react6.useState)(0);
148
148
  const rerenderEditor = () => _setCount((count) => count + 1);
149
149
  const messageRef = (0, import_react6.useRef)("");
@@ -157,7 +157,7 @@ var CommentContainer = ({ thread, detached, context, current, autoFocusTextbox,
157
157
  (0, import_react_ui_editor2.listener)({
158
158
  onChange: (text) => messageRef.current = text
159
159
  }),
160
- import_chunk_3VAAUEU5.command
160
+ import_chunk_5PZNPPQF.command
161
161
  ], [
162
162
  _count
163
163
  ]);
@@ -217,7 +217,7 @@ var CommentContainer = ({ thread, detached, context, current, autoFocusTextbox,
217
217
  onResolve
218
218
  }), onThreadDelete && /* @__PURE__ */ import_react6.default.createElement(DeleteThreadButton, {
219
219
  onDelete: onThreadDelete
220
- }))), thread.messages.filter(import_util2.nonNullable).map((message) => /* @__PURE__ */ import_react6.default.createElement(import_chunk_3VAAUEU5.MessageContainer, {
220
+ }))), thread.messages.filter(import_util2.nonNullable).map((message) => /* @__PURE__ */ import_react6.default.createElement(import_chunk_5PZNPPQF.MessageContainer, {
221
221
  key: message.id,
222
222
  message,
223
223
  members,
@@ -282,7 +282,7 @@ var CommentsContainer = ({ threads, detached = [], currentId, autoFocusCurrentTe
282
282
  role: "alert",
283
283
  className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.descriptionText, "place-self-center border border-dashed border-neutral-400/50 rounded-lg text-center p-4 m-4")
284
284
  }, /* @__PURE__ */ import_react8.default.createElement("h2", {
285
- className: "mbe-2 font-medium text-base"
285
+ className: "mbe-2 font-medium text-baseText"
286
286
  }, t("no comments title")), /* @__PURE__ */ import_react8.default.createElement("p", null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Trans, {
287
287
  t,
288
288
  i18nKey: "no comments message",
@@ -293,8 +293,8 @@ var CommentsContainer = ({ threads, detached = [], currentId, autoFocusCurrentTe
293
293
  }
294
294
  }))));
295
295
  };
296
- var ThreadMain = import_react3.default.lazy(() => import("./ThreadMain-XP4YSF7U.cjs"));
297
- var ThreadArticle = import_react3.default.lazy(() => import("./ThreadArticle-CSENFNNT.cjs"));
296
+ var ThreadMain = import_react3.default.lazy(() => import("./ThreadMain-XJX75GHG.cjs"));
297
+ var ThreadArticle = import_react3.default.lazy(() => import("./ThreadArticle-DO56JXBU.cjs"));
298
298
  var translations_default = [
299
299
  {
300
300
  "en-US": {
@@ -722,9 +722,9 @@ var ThreadPlugin = () => {
722
722
  className: "bs-10"
723
723
  }), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.ScrollArea.Scrollbar, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.ScrollArea.Thumb, null)))));
724
724
  } else if (data.subject instanceof import_types2.ThreadType) {
725
- return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(import_chunk_3VAAUEU5.ChatHeading, {
725
+ return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(import_chunk_5PZNPPQF.ChatHeading, {
726
726
  attendableId: data.subject.id
727
- }), /* @__PURE__ */ import_react2.default.createElement(import_chunk_3VAAUEU5.ChatContainer, {
727
+ }), /* @__PURE__ */ import_react2.default.createElement(import_chunk_5PZNPPQF.ChatContainer, {
728
728
  thread: data.subject
729
729
  }));
730
730
  }