@wordpress/editor 14.44.0 → 14.44.1-next.v.202604201441.0

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.
Files changed (103) hide show
  1. package/build/components/collab-sidebar/add-comment.cjs +6 -22
  2. package/build/components/collab-sidebar/add-comment.cjs.map +3 -3
  3. package/build/components/collab-sidebar/board-store.cjs +103 -0
  4. package/build/components/collab-sidebar/board-store.cjs.map +7 -0
  5. package/build/components/collab-sidebar/comment-form.cjs +2 -10
  6. package/build/components/collab-sidebar/comment-form.cjs.map +2 -2
  7. package/build/components/collab-sidebar/comments.cjs +29 -149
  8. package/build/components/collab-sidebar/comments.cjs.map +3 -3
  9. package/build/components/collab-sidebar/floating-container.cjs +62 -0
  10. package/build/components/collab-sidebar/floating-container.cjs.map +7 -0
  11. package/build/components/collab-sidebar/hooks.cjs +49 -41
  12. package/build/components/collab-sidebar/hooks.cjs.map +2 -2
  13. package/build/components/collab-sidebar/index.cjs +2 -13
  14. package/build/components/collab-sidebar/index.cjs.map +2 -2
  15. package/build/components/collab-sidebar/utils.cjs +72 -4
  16. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  17. package/build/components/collaborators-presence/avatar/component.cjs.map +1 -1
  18. package/build/components/collaborators-presence/index.cjs +3 -3
  19. package/build/components/collaborators-presence/index.cjs.map +2 -2
  20. package/build/components/collaborators-presence/list.cjs +3 -3
  21. package/build/components/collaborators-presence/list.cjs.map +2 -2
  22. package/build/components/media-categories/index.cjs +1 -1
  23. package/build/components/media-categories/index.cjs.map +1 -1
  24. package/build/components/more-menu/index.cjs +1 -1
  25. package/build/components/more-menu/index.cjs.map +1 -1
  26. package/build/components/post-publish-panel/maybe-upload-media.cjs +1 -1
  27. package/build/components/post-publish-panel/maybe-upload-media.cjs.map +1 -1
  28. package/build/components/style-book/constants.cjs +1 -1
  29. package/build/components/style-book/constants.cjs.map +1 -1
  30. package/build/components/style-book/index.cjs +1 -1
  31. package/build/components/style-book/index.cjs.map +1 -1
  32. package/build-module/components/collab-sidebar/add-comment.mjs +8 -27
  33. package/build-module/components/collab-sidebar/add-comment.mjs.map +2 -2
  34. package/build-module/components/collab-sidebar/board-store.mjs +78 -0
  35. package/build-module/components/collab-sidebar/board-store.mjs.map +7 -0
  36. package/build-module/components/collab-sidebar/comment-form.mjs +4 -12
  37. package/build-module/components/collab-sidebar/comment-form.mjs.map +2 -2
  38. package/build-module/components/collab-sidebar/comments.mjs +30 -151
  39. package/build-module/components/collab-sidebar/comments.mjs.map +2 -2
  40. package/build-module/components/collab-sidebar/floating-container.mjs +27 -0
  41. package/build-module/components/collab-sidebar/floating-container.mjs.map +7 -0
  42. package/build-module/components/collab-sidebar/hooks.mjs +51 -44
  43. package/build-module/components/collab-sidebar/hooks.mjs.map +2 -2
  44. package/build-module/components/collab-sidebar/index.mjs +2 -13
  45. package/build-module/components/collab-sidebar/index.mjs.map +2 -2
  46. package/build-module/components/collab-sidebar/utils.mjs +71 -3
  47. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  48. package/build-module/components/collaborators-presence/avatar/component.mjs.map +1 -1
  49. package/build-module/components/collaborators-presence/index.mjs +3 -3
  50. package/build-module/components/collaborators-presence/index.mjs.map +2 -2
  51. package/build-module/components/collaborators-presence/list.mjs +3 -3
  52. package/build-module/components/collaborators-presence/list.mjs.map +2 -2
  53. package/build-module/components/media-categories/index.mjs +1 -1
  54. package/build-module/components/media-categories/index.mjs.map +1 -1
  55. package/build-module/components/more-menu/index.mjs +1 -1
  56. package/build-module/components/more-menu/index.mjs.map +1 -1
  57. package/build-module/components/post-publish-panel/maybe-upload-media.mjs +1 -1
  58. package/build-module/components/post-publish-panel/maybe-upload-media.mjs.map +1 -1
  59. package/build-module/components/style-book/constants.mjs +1 -1
  60. package/build-module/components/style-book/constants.mjs.map +1 -1
  61. package/build-module/components/style-book/index.mjs +1 -1
  62. package/build-module/components/style-book/index.mjs.map +1 -1
  63. package/build-style/style-rtl.css +12 -30
  64. package/build-style/style.css +12 -30
  65. package/build-types/components/collab-sidebar/add-comment.d.ts +2 -6
  66. package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
  67. package/build-types/components/collab-sidebar/board-store.d.ts +8 -0
  68. package/build-types/components/collab-sidebar/board-store.d.ts.map +1 -0
  69. package/build-types/components/collab-sidebar/comment-form.d.ts +1 -3
  70. package/build-types/components/collab-sidebar/comment-form.d.ts.map +1 -1
  71. package/build-types/components/collab-sidebar/comments.d.ts +1 -3
  72. package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
  73. package/build-types/components/collab-sidebar/floating-container.d.ts +8 -0
  74. package/build-types/components/collab-sidebar/floating-container.d.ts.map +1 -0
  75. package/build-types/components/collab-sidebar/hooks.d.ts +13 -9
  76. package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
  77. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  78. package/build-types/components/collab-sidebar/utils.d.ts +27 -4
  79. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  80. package/build-types/components/style-book/constants.d.ts +1 -1
  81. package/build-types/components/style-book/constants.d.ts.map +1 -1
  82. package/package.json +45 -45
  83. package/src/components/collab-sidebar/add-comment.js +9 -31
  84. package/src/components/collab-sidebar/board-store.js +83 -0
  85. package/src/components/collab-sidebar/comment-form.js +5 -14
  86. package/src/components/collab-sidebar/comments.js +29 -202
  87. package/src/components/collab-sidebar/floating-container.js +29 -0
  88. package/src/components/collab-sidebar/hooks.js +60 -48
  89. package/src/components/collab-sidebar/index.js +3 -14
  90. package/src/components/collab-sidebar/test/utils.js +153 -0
  91. package/src/components/collab-sidebar/utils.js +112 -4
  92. package/src/components/collaborators-presence/avatar/component.tsx +1 -1
  93. package/src/components/collaborators-presence/styles/collaborators-list.scss +1 -1
  94. package/src/components/collaborators-presence/styles/collaborators-presence.scss +1 -1
  95. package/src/components/document-outline/style.scss +1 -1
  96. package/src/components/media-categories/index.js +1 -1
  97. package/src/components/more-menu/index.js +1 -1
  98. package/src/components/post-publish-panel/maybe-upload-media.js +1 -1
  99. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +2 -2
  100. package/src/components/post-revisions-preview/style.scss +1 -1
  101. package/src/components/style-book/constants.ts +1 -1
  102. package/src/components/style-book/index.js +1 -1
  103. package/src/components/template-actions-panel/style.scss +1 -1
@@ -33,7 +33,6 @@ __export(add_comment_exports, {
33
33
  AddComment: () => AddComment
34
34
  });
35
35
  module.exports = __toCommonJS(add_comment_exports);
36
- var import_clsx = __toESM(require("clsx"));
37
36
  var import_i18n = require("@wordpress/i18n");
38
37
  var import_data = require("@wordpress/data");
39
38
  var import_components = require("@wordpress/components");
@@ -41,18 +40,12 @@ var import_block_editor = require("@wordpress/block-editor");
41
40
  var import_lock_unlock = require("../../lock-unlock.cjs");
42
41
  var import_comment_author_info = __toESM(require("./comment-author-info.cjs"));
43
42
  var import_comment_form = __toESM(require("./comment-form.cjs"));
43
+ var import_floating_container = require("./floating-container.cjs");
44
44
  var import_utils = require("./utils.cjs");
45
45
  var import_store = require("../../store/index.cjs");
46
46
  var import_jsx_runtime = require("react/jsx-runtime");
47
47
  var { useBlockElement } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
48
- function AddComment({
49
- onSubmit,
50
- commentSidebarRef,
51
- reflowComments = import_utils.noop,
52
- isFloating = false,
53
- y,
54
- refs
55
- }) {
48
+ function AddComment({ onSubmit, commentSidebarRef, floating }) {
56
49
  const { clientId } = (0, import_data.useSelect)((select) => {
57
50
  const { getSelectedBlockClientId } = select(import_block_editor.store);
58
51
  return {
@@ -75,23 +68,15 @@ function AddComment({
75
68
  return null;
76
69
  }
77
70
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
78
- import_components.__experimentalVStack,
71
+ import_floating_container.FloatingContainer,
79
72
  {
80
- className: (0, import_clsx.default)(
81
- "editor-collab-sidebar-panel__thread is-selected",
82
- {
83
- "is-floating": isFloating
84
- }
85
- ),
73
+ floating,
74
+ className: "editor-collab-sidebar-panel__thread is-selected",
86
75
  spacing: "3",
87
76
  tabIndex: 0,
88
77
  "aria-label": (0, import_i18n.__)("New note"),
89
78
  role: "treeitem",
90
- ref: isFloating ? refs.setFloating : void 0,
91
- style: isFloating ? (
92
- // Delay showing the floating note box until a Y position is known to prevent blink.
93
- { top: y, opacity: !y ? 0 : void 0 }
94
- ) : void 0,
79
+ style: floating ? { opacity: !floating.y ? 0 : void 0 } : void 0,
95
80
  onBlur: (event) => {
96
81
  if (!document.hasFocus()) {
97
82
  return;
@@ -113,7 +98,6 @@ function AddComment({
113
98
  (0, import_utils.focusCommentThread)(id, commentSidebarRef.current);
114
99
  },
115
100
  onCancel: unselectThread,
116
- reflowComments,
117
101
  submitButtonText: (0, import_i18n.__)("Add note"),
118
102
  labelText: (0, import_i18n.__)("New note")
119
103
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/collab-sidebar/add-comment.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\nimport { focusCommentThread, noop } from './utils';\nimport { store as editorStore } from '../../store';\n\nconst { useBlockElement } = unlock( blockEditorPrivateApis );\n\nexport function AddComment( {\n\tonSubmit,\n\tcommentSidebarRef,\n\treflowComments = noop,\n\tisFloating = false,\n\ty,\n\trefs,\n} ) {\n\tconst { clientId } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId } = select( blockEditorStore );\n\t\treturn {\n\t\t\tclientId: getSelectedBlockClientId(),\n\t\t};\n\t}, [] );\n\tconst selectedNote = useSelect(\n\t\t( select ) => unlock( select( editorStore ) ).getSelectedNote(),\n\t\t[]\n\t);\n\tconst blockElement = useBlockElement( clientId );\n\tconst { toggleBlockSpotlight } = unlock( useDispatch( blockEditorStore ) );\n\tconst { selectNote } = unlock( useDispatch( editorStore ) );\n\n\tconst unselectThread = () => {\n\t\tselectNote( undefined );\n\t\tblockElement?.focus();\n\t\ttoggleBlockSpotlight( clientId, false );\n\t};\n\n\tif ( selectedNote !== 'new' || ! clientId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName={ clsx(\n\t\t\t\t'editor-collab-sidebar-panel__thread is-selected',\n\t\t\t\t{\n\t\t\t\t\t'is-floating': isFloating,\n\t\t\t\t}\n\t\t\t) }\n\t\t\tspacing=\"3\"\n\t\t\ttabIndex={ 0 }\n\t\t\taria-label={ __( 'New note' ) }\n\t\t\trole=\"treeitem\"\n\t\t\tref={ isFloating ? refs.setFloating : undefined }\n\t\t\tstyle={\n\t\t\t\tisFloating\n\t\t\t\t\t? // Delay showing the floating note box until a Y position is known to prevent blink.\n\t\t\t\t\t { top: y, opacity: ! y ? 0 : undefined }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonBlur={ ( event ) => {\n\t\t\t\t// Don't deselect notes when the browser window/tab loses focus.\n\t\t\t\tif ( ! document.hasFocus() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( event.currentTarget.contains( event.relatedTarget ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockSpotlight( clientId, false );\n\t\t\t\tselectNote( undefined );\n\t\t\t} }\n\t\t>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\">\n\t\t\t\t<CommentAuthorInfo />\n\t\t\t</HStack>\n\t\t\t<CommentForm\n\t\t\t\tonSubmit={ async ( inputComment ) => {\n\t\t\t\t\tconst { id } = await onSubmit( { content: inputComment } );\n\t\t\t\t\tselectNote( id );\n\t\t\t\t\tfocusCommentThread( id, commentSidebarRef.current );\n\t\t\t\t} }\n\t\t\t\tonCancel={ unselectThread }\n\t\t\t\treflowComments={ reflowComments }\n\t\t\t\tsubmitButtonText={ __( 'Add note' ) }\n\t\t\t\tlabelText={ __( 'New note' ) }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAIjB,kBAAmB;AACnB,kBAAuC;AACvC,wBAGO;AACP,0BAGO;AAKP,yBAAuB;AACvB,iCAA8B;AAC9B,0BAAwB;AACxB,mBAAyC;AACzC,mBAAqC;AAqCnC;AAnCF,IAAM,EAAE,gBAAgB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEpD,SAAS,WAAY;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,SAAS,QAAI,uBAAW,CAAE,WAAY;AAC7C,UAAM,EAAE,yBAAyB,IAAI,OAAQ,oBAAAC,KAAiB;AAC9D,WAAO;AAAA,MACN,UAAU,yBAAyB;AAAA,IACpC;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,mBAAe;AAAA,IACpB,CAAE,eAAY,2BAAQ,OAAQ,aAAAC,KAAY,CAAE,EAAE,gBAAgB;AAAA,IAC9D,CAAC;AAAA,EACF;AACA,QAAM,eAAe,gBAAiB,QAAS;AAC/C,QAAM,EAAE,qBAAqB,QAAI,+BAAQ,yBAAa,oBAAAD,KAAiB,CAAE;AACzE,QAAM,EAAE,WAAW,QAAI,+BAAQ,yBAAa,aAAAC,KAAY,CAAE;AAE1D,QAAM,iBAAiB,MAAM;AAC5B,eAAY,MAAU;AACtB,kBAAc,MAAM;AACpB,yBAAsB,UAAU,KAAM;AAAA,EACvC;AAEA,MAAK,iBAAiB,SAAS,CAAE,UAAW;AAC3C,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC,kBAAAC;AAAA,IAAA;AAAA,MACA,eAAY,YAAAC;AAAA,QACX;AAAA,QACA;AAAA,UACC,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MACA,SAAQ;AAAA,MACR,UAAW;AAAA,MACX,kBAAa,gBAAI,UAAW;AAAA,MAC5B,MAAK;AAAA,MACL,KAAM,aAAa,KAAK,cAAc;AAAA,MACtC,OACC;AAAA;AAAA,QAEG,EAAE,KAAK,GAAG,SAAS,CAAE,IAAI,IAAI,OAAU;AAAA,UACvC;AAAA,MAEJ,QAAS,CAAE,UAAW;AAErB,YAAK,CAAE,SAAS,SAAS,GAAI;AAC5B;AAAA,QACD;AACA,YAAK,MAAM,cAAc,SAAU,MAAM,aAAc,GAAI;AAC1D;AAAA,QACD;AACA,6BAAsB,UAAU,KAAM;AACtC,mBAAY,MAAU;AAAA,MACvB;AAAA,MAEA;AAAA,oDAAC,kBAAAC,sBAAA,EAAO,WAAU,QAAO,SAAQ,KAChC,sDAAC,2BAAAC,SAAA,EAAkB,GACpB;AAAA,QACA;AAAA,UAAC,oBAAAC;AAAA,UAAA;AAAA,YACA,UAAW,OAAQ,iBAAkB;AACpC,oBAAM,EAAE,GAAG,IAAI,MAAM,SAAU,EAAE,SAAS,aAAa,CAAE;AACzD,yBAAY,EAAG;AACf,mDAAoB,IAAI,kBAAkB,OAAQ;AAAA,YACnD;AAAA,YACA,UAAW;AAAA,YACX;AAAA,YACA,sBAAmB,gBAAI,UAAW;AAAA,YAClC,eAAY,gBAAI,UAAW;AAAA;AAAA,QAC5B;AAAA;AAAA;AAAA,EACD;AAEF;",
6
- "names": ["blockEditorPrivateApis", "blockEditorStore", "editorStore", "VStack", "clsx", "HStack", "CommentAuthorInfo", "CommentForm"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\nimport { FloatingContainer } from './floating-container';\nimport { focusCommentThread } from './utils';\nimport { store as editorStore } from '../../store';\n\nconst { useBlockElement } = unlock( blockEditorPrivateApis );\n\nexport function AddComment( { onSubmit, commentSidebarRef, floating } ) {\n\tconst { clientId } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId } = select( blockEditorStore );\n\t\treturn {\n\t\t\tclientId: getSelectedBlockClientId(),\n\t\t};\n\t}, [] );\n\tconst selectedNote = useSelect(\n\t\t( select ) => unlock( select( editorStore ) ).getSelectedNote(),\n\t\t[]\n\t);\n\tconst blockElement = useBlockElement( clientId );\n\tconst { toggleBlockSpotlight } = unlock( useDispatch( blockEditorStore ) );\n\tconst { selectNote } = unlock( useDispatch( editorStore ) );\n\n\tconst unselectThread = () => {\n\t\tselectNote( undefined );\n\t\tblockElement?.focus();\n\t\ttoggleBlockSpotlight( clientId, false );\n\t};\n\n\tif ( selectedNote !== 'new' || ! clientId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<FloatingContainer\n\t\t\tfloating={ floating }\n\t\t\tclassName=\"editor-collab-sidebar-panel__thread is-selected\"\n\t\t\tspacing=\"3\"\n\t\t\ttabIndex={ 0 }\n\t\t\taria-label={ __( 'New note' ) }\n\t\t\trole=\"treeitem\"\n\t\t\tstyle={\n\t\t\t\tfloating ? { opacity: ! floating.y ? 0 : undefined } : undefined\n\t\t\t}\n\t\t\tonBlur={ ( event ) => {\n\t\t\t\t// Don't deselect notes when the browser window/tab loses focus.\n\t\t\t\tif ( ! document.hasFocus() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( event.currentTarget.contains( event.relatedTarget ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockSpotlight( clientId, false );\n\t\t\t\tselectNote( undefined );\n\t\t\t} }\n\t\t>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\">\n\t\t\t\t<CommentAuthorInfo />\n\t\t\t</HStack>\n\t\t\t<CommentForm\n\t\t\t\tonSubmit={ async ( inputComment ) => {\n\t\t\t\t\tconst { id } = await onSubmit( { content: inputComment } );\n\t\t\t\t\tselectNote( id );\n\t\t\t\t\tfocusCommentThread( id, commentSidebarRef.current );\n\t\t\t\t} }\n\t\t\t\tonCancel={ unselectThread }\n\t\t\t\tsubmitButtonText={ __( 'Add note' ) }\n\t\t\t\tlabelText={ __( 'New note' ) }\n\t\t\t/>\n\t\t</FloatingContainer>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,kBAAuC;AACvC,wBAA+C;AAC/C,0BAGO;AAKP,yBAAuB;AACvB,iCAA8B;AAC9B,0BAAwB;AACxB,gCAAkC;AAClC,mBAAmC;AACnC,mBAAqC;AA8BnC;AA5BF,IAAM,EAAE,gBAAgB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEpD,SAAS,WAAY,EAAE,UAAU,mBAAmB,SAAS,GAAI;AACvE,QAAM,EAAE,SAAS,QAAI,uBAAW,CAAE,WAAY;AAC7C,UAAM,EAAE,yBAAyB,IAAI,OAAQ,oBAAAC,KAAiB;AAC9D,WAAO;AAAA,MACN,UAAU,yBAAyB;AAAA,IACpC;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,mBAAe;AAAA,IACpB,CAAE,eAAY,2BAAQ,OAAQ,aAAAC,KAAY,CAAE,EAAE,gBAAgB;AAAA,IAC9D,CAAC;AAAA,EACF;AACA,QAAM,eAAe,gBAAiB,QAAS;AAC/C,QAAM,EAAE,qBAAqB,QAAI,+BAAQ,yBAAa,oBAAAD,KAAiB,CAAE;AACzE,QAAM,EAAE,WAAW,QAAI,+BAAQ,yBAAa,aAAAC,KAAY,CAAE;AAE1D,QAAM,iBAAiB,MAAM;AAC5B,eAAY,MAAU;AACtB,kBAAc,MAAM;AACpB,yBAAsB,UAAU,KAAM;AAAA,EACvC;AAEA,MAAK,iBAAiB,SAAS,CAAE,UAAW;AAC3C,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,UAAW;AAAA,MACX,kBAAa,gBAAI,UAAW;AAAA,MAC5B,MAAK;AAAA,MACL,OACC,WAAW,EAAE,SAAS,CAAE,SAAS,IAAI,IAAI,OAAU,IAAI;AAAA,MAExD,QAAS,CAAE,UAAW;AAErB,YAAK,CAAE,SAAS,SAAS,GAAI;AAC5B;AAAA,QACD;AACA,YAAK,MAAM,cAAc,SAAU,MAAM,aAAc,GAAI;AAC1D;AAAA,QACD;AACA,6BAAsB,UAAU,KAAM;AACtC,mBAAY,MAAU;AAAA,MACvB;AAAA,MAEA;AAAA,oDAAC,kBAAAC,sBAAA,EAAO,WAAU,QAAO,SAAQ,KAChC,sDAAC,2BAAAC,SAAA,EAAkB,GACpB;AAAA,QACA;AAAA,UAAC,oBAAAC;AAAA,UAAA;AAAA,YACA,UAAW,OAAQ,iBAAkB;AACpC,oBAAM,EAAE,GAAG,IAAI,MAAM,SAAU,EAAE,SAAS,aAAa,CAAE;AACzD,yBAAY,EAAG;AACf,mDAAoB,IAAI,kBAAkB,OAAQ;AAAA,YACnD;AAAA,YACA,UAAW;AAAA,YACX,sBAAmB,gBAAI,UAAW;AAAA,YAClC,eAAY,gBAAI,UAAW;AAAA;AAAA,QAC5B;AAAA;AAAA;AAAA,EACD;AAEF;",
6
+ "names": ["blockEditorPrivateApis", "blockEditorStore", "editorStore", "HStack", "CommentAuthorInfo", "CommentForm"]
7
7
  }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/editor/src/components/collab-sidebar/board-store.js
21
+ var board_store_exports = {};
22
+ __export(board_store_exports, {
23
+ createBoardStore: () => createBoardStore
24
+ });
25
+ module.exports = __toCommonJS(board_store_exports);
26
+ function createBoardStore() {
27
+ const listeners = /* @__PURE__ */ new Set();
28
+ const blockRefs = /* @__PURE__ */ new Map();
29
+ const floatingRefs = /* @__PURE__ */ new Map();
30
+ const idByElement = /* @__PURE__ */ new WeakMap();
31
+ const heights = {};
32
+ let snapshot = {};
33
+ function emit() {
34
+ snapshot = { ...heights };
35
+ for (const listener of listeners) {
36
+ listener();
37
+ }
38
+ }
39
+ const observer = new window.ResizeObserver((entries) => {
40
+ let changed = false;
41
+ for (const entry of entries) {
42
+ const id = idByElement.get(entry.target);
43
+ const newHeight = entry.borderBoxSize[0].blockSize;
44
+ if (heights[id] !== newHeight) {
45
+ heights[id] = newHeight;
46
+ changed = true;
47
+ }
48
+ }
49
+ if (changed) {
50
+ emit();
51
+ }
52
+ });
53
+ return {
54
+ subscribe(listener) {
55
+ listeners.add(listener);
56
+ return () => {
57
+ listeners.delete(listener);
58
+ if (listeners.size === 0) {
59
+ observer.disconnect();
60
+ }
61
+ };
62
+ },
63
+ getSnapshot() {
64
+ return snapshot;
65
+ },
66
+ registerThread(id, blockEl, floatingEl) {
67
+ blockRefs.set(id, blockEl);
68
+ const prev = floatingRefs.get(id);
69
+ if (prev && prev !== floatingEl) {
70
+ observer.unobserve(prev);
71
+ idByElement.delete(prev);
72
+ }
73
+ if (floatingEl) {
74
+ floatingRefs.set(id, floatingEl);
75
+ idByElement.set(floatingEl, id);
76
+ observer.observe(floatingEl);
77
+ }
78
+ emit();
79
+ },
80
+ unregisterThread(id) {
81
+ blockRefs.delete(id);
82
+ const prev = floatingRefs.get(id);
83
+ if (prev) {
84
+ observer.unobserve(prev);
85
+ idByElement.delete(prev);
86
+ floatingRefs.delete(id);
87
+ }
88
+ delete heights[id];
89
+ },
90
+ getBlockRects() {
91
+ return Object.fromEntries(
92
+ Array.from(blockRefs).flatMap(
93
+ ([id, el]) => el ? [[id, el.getBoundingClientRect()]] : []
94
+ )
95
+ );
96
+ }
97
+ };
98
+ }
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ createBoardStore
102
+ });
103
+ //# sourceMappingURL=board-store.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/collab-sidebar/board-store.js"],
4
+ "sourcesContent": ["export function createBoardStore() {\n\tconst listeners = new Set();\n\tconst blockRefs = new Map();\n\tconst floatingRefs = new Map();\n\tconst idByElement = new WeakMap();\n\tconst heights = {};\n\tlet snapshot = {};\n\n\tfunction emit() {\n\t\tsnapshot = { ...heights };\n\t\tfor ( const listener of listeners ) {\n\t\t\tlistener();\n\t\t}\n\t}\n\n\tconst observer = new window.ResizeObserver( ( entries ) => {\n\t\tlet changed = false;\n\t\tfor ( const entry of entries ) {\n\t\t\tconst id = idByElement.get( entry.target );\n\t\t\tconst newHeight = entry.borderBoxSize[ 0 ].blockSize;\n\t\t\tif ( heights[ id ] !== newHeight ) {\n\t\t\t\theights[ id ] = newHeight;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t\tif ( changed ) {\n\t\t\temit();\n\t\t}\n\t} );\n\n\treturn {\n\t\tsubscribe( listener ) {\n\t\t\tlisteners.add( listener );\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete( listener );\n\t\t\t\tif ( listeners.size === 0 ) {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\tgetSnapshot() {\n\t\t\treturn snapshot;\n\t\t},\n\n\t\tregisterThread( id, blockEl, floatingEl ) {\n\t\t\tblockRefs.set( id, blockEl );\n\n\t\t\tconst prev = floatingRefs.get( id );\n\t\t\tif ( prev && prev !== floatingEl ) {\n\t\t\t\tobserver.unobserve( prev );\n\t\t\t\tidByElement.delete( prev );\n\t\t\t}\n\t\t\tif ( floatingEl ) {\n\t\t\t\tfloatingRefs.set( id, floatingEl );\n\t\t\t\tidByElement.set( floatingEl, id );\n\t\t\t\tobserver.observe( floatingEl );\n\t\t\t}\n\n\t\t\temit();\n\t\t},\n\n\t\tunregisterThread( id ) {\n\t\t\tblockRefs.delete( id );\n\t\t\tconst prev = floatingRefs.get( id );\n\t\t\tif ( prev ) {\n\t\t\t\tobserver.unobserve( prev );\n\t\t\t\tidByElement.delete( prev );\n\t\t\t\tfloatingRefs.delete( id );\n\t\t\t}\n\t\t\tdelete heights[ id ];\n\t\t},\n\n\t\tgetBlockRects() {\n\t\t\t// Batch all rect reads before any writes to avoid layout thrashing.\n\t\t\treturn Object.fromEntries(\n\t\t\t\tArray.from( blockRefs ).flatMap( ( [ id, el ] ) =>\n\t\t\t\t\tel ? [ [ id, el.getBoundingClientRect() ] ] : []\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t};\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,mBAAmB;AAClC,QAAM,YAAY,oBAAI,IAAI;AAC1B,QAAM,YAAY,oBAAI,IAAI;AAC1B,QAAM,eAAe,oBAAI,IAAI;AAC7B,QAAM,cAAc,oBAAI,QAAQ;AAChC,QAAM,UAAU,CAAC;AACjB,MAAI,WAAW,CAAC;AAEhB,WAAS,OAAO;AACf,eAAW,EAAE,GAAG,QAAQ;AACxB,eAAY,YAAY,WAAY;AACnC,eAAS;AAAA,IACV;AAAA,EACD;AAEA,QAAM,WAAW,IAAI,OAAO,eAAgB,CAAE,YAAa;AAC1D,QAAI,UAAU;AACd,eAAY,SAAS,SAAU;AAC9B,YAAM,KAAK,YAAY,IAAK,MAAM,MAAO;AACzC,YAAM,YAAY,MAAM,cAAe,CAAE,EAAE;AAC3C,UAAK,QAAS,EAAG,MAAM,WAAY;AAClC,gBAAS,EAAG,IAAI;AAChB,kBAAU;AAAA,MACX;AAAA,IACD;AACA,QAAK,SAAU;AACd,WAAK;AAAA,IACN;AAAA,EACD,CAAE;AAEF,SAAO;AAAA,IACN,UAAW,UAAW;AACrB,gBAAU,IAAK,QAAS;AACxB,aAAO,MAAM;AACZ,kBAAU,OAAQ,QAAS;AAC3B,YAAK,UAAU,SAAS,GAAI;AAC3B,mBAAS,WAAW;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA,IAEA,cAAc;AACb,aAAO;AAAA,IACR;AAAA,IAEA,eAAgB,IAAI,SAAS,YAAa;AACzC,gBAAU,IAAK,IAAI,OAAQ;AAE3B,YAAM,OAAO,aAAa,IAAK,EAAG;AAClC,UAAK,QAAQ,SAAS,YAAa;AAClC,iBAAS,UAAW,IAAK;AACzB,oBAAY,OAAQ,IAAK;AAAA,MAC1B;AACA,UAAK,YAAa;AACjB,qBAAa,IAAK,IAAI,UAAW;AACjC,oBAAY,IAAK,YAAY,EAAG;AAChC,iBAAS,QAAS,UAAW;AAAA,MAC9B;AAEA,WAAK;AAAA,IACN;AAAA,IAEA,iBAAkB,IAAK;AACtB,gBAAU,OAAQ,EAAG;AACrB,YAAM,OAAO,aAAa,IAAK,EAAG;AAClC,UAAK,MAAO;AACX,iBAAS,UAAW,IAAK;AACzB,oBAAY,OAAQ,IAAK;AACzB,qBAAa,OAAQ,EAAG;AAAA,MACzB;AACA,aAAO,QAAS,EAAG;AAAA,IACpB;AAAA,IAEA,gBAAgB;AAEf,aAAO,OAAO;AAAA,QACb,MAAM,KAAM,SAAU,EAAE;AAAA,UAAS,CAAE,CAAE,IAAI,EAAG,MAC3C,KAAK,CAAE,CAAE,IAAI,GAAG,sBAAsB,CAAE,CAAE,IAAI,CAAC;AAAA,QAChD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;",
6
+ "names": []
7
+ }
@@ -46,16 +46,11 @@ function CommentForm({
46
46
  onCancel,
47
47
  thread,
48
48
  submitButtonText,
49
- labelText,
50
- reflowComments = import_utils.noop
49
+ labelText
51
50
  }) {
52
51
  const [inputComment, setInputComment] = (0, import_element.useState)(
53
52
  thread?.content?.raw ?? ""
54
53
  );
55
- const debouncedCommentUpdated = (0, import_compose.useDebounce)(reflowComments, 100);
56
- const updateComment = (value) => {
57
- setInputComment(value);
58
- };
59
54
  const inputId = (0, import_compose.useInstanceId)(CommentForm, "comment-input");
60
55
  const isDisabled = inputComment === thread?.content?.raw || !(0, import_utils.sanitizeCommentString)(inputComment).length;
61
56
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
@@ -76,10 +71,7 @@ function CommentForm({
76
71
  {
77
72
  id: inputId,
78
73
  value: inputComment ?? "",
79
- onChange: (comment) => {
80
- updateComment(comment.target.value);
81
- debouncedCommentUpdated();
82
- },
74
+ onChange: (comment) => setInputComment(comment.target.value),
83
75
  rows: 1,
84
76
  maxRows: 20,
85
77
  onKeyDown: (event) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/collab-sidebar/comment-form.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport TextareaAutosize from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tButton,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useInstanceId, useDebounce } from '@wordpress/compose';\nimport { isKeyboardEvent } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { sanitizeCommentString, noop } from './utils';\n\nfunction CommentForm( {\n\tonSubmit,\n\tonCancel,\n\tthread,\n\tsubmitButtonText,\n\tlabelText,\n\treflowComments = noop,\n} ) {\n\tconst [ inputComment, setInputComment ] = useState(\n\t\tthread?.content?.raw ?? ''\n\t);\n\n\t// Regularly trigger a reflow as the user types since the textarea may grow or shrink.\n\tconst debouncedCommentUpdated = useDebounce( reflowComments, 100 );\n\n\tconst updateComment = ( value ) => {\n\t\tsetInputComment( value );\n\t};\n\n\tconst inputId = useInstanceId( CommentForm, 'comment-input' );\n\tconst isDisabled =\n\t\tinputComment === thread?.content?.raw ||\n\t\t! sanitizeCommentString( inputComment ).length;\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"editor-collab-sidebar-panel__comment-form\"\n\t\t\tspacing=\"4\"\n\t\t\tas=\"form\"\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSubmit( inputComment );\n\t\t\t\tsetInputComment( '' );\n\t\t\t} }\n\t\t>\n\t\t\t<VisuallyHidden as=\"label\" htmlFor={ inputId }>\n\t\t\t\t{ labelText ?? __( 'Note' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<TextareaAutosize\n\t\t\t\tid={ inputId }\n\t\t\t\tvalue={ inputComment ?? '' }\n\t\t\t\tonChange={ ( comment ) => {\n\t\t\t\t\tupdateComment( comment.target.value );\n\t\t\t\t\tdebouncedCommentUpdated();\n\t\t\t\t} }\n\t\t\t\trows={ 1 }\n\t\t\t\tmaxRows={ 20 }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tisKeyboardEvent.primary( event, 'Enter' ) &&\n\t\t\t\t\t\t! isDisabled\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.target.parentNode.requestSubmit();\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t// Passing event for reply forms.\n\t\t\t\t\t\tonCancel( event );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<HStack spacing=\"2\" justify=\"flex-end\" wrap>\n\t\t\t\t<Button size=\"compact\" variant=\"tertiary\" onClick={ onCancel }>\n\t\t\t\t\t<Truncate>{ __( 'Cancel' ) }</Truncate>\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t>\n\t\t\t\t\t<Truncate>{ submitButtonText }</Truncate>\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default CommentForm;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qCAA6B;AAK7B,qBAAyB;AACzB,wBAMO;AACP,kBAAmB;AACnB,qBAA2C;AAC3C,sBAAgC;AAKhC,mBAA4C;AAqCzC;AAnCH,SAAS,YAAa;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAClB,GAAI;AACH,QAAM,CAAE,cAAc,eAAgB,QAAI;AAAA,IACzC,QAAQ,SAAS,OAAO;AAAA,EACzB;AAGA,QAAM,8BAA0B,4BAAa,gBAAgB,GAAI;AAEjE,QAAM,gBAAgB,CAAE,UAAW;AAClC,oBAAiB,KAAM;AAAA,EACxB;AAEA,QAAM,cAAU,8BAAe,aAAa,eAAgB;AAC5D,QAAM,aACL,iBAAiB,QAAQ,SAAS,OAClC,KAAE,oCAAuB,YAAa,EAAE;AAEzC,SACC;AAAA,IAAC,kBAAAA;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,IAAG;AAAA,MACH,UAAW,CAAE,UAAW;AACvB,cAAM,eAAe;AACrB,iBAAU,YAAa;AACvB,wBAAiB,EAAG;AAAA,MACrB;AAAA,MAEA;AAAA,oDAAC,oCAAe,IAAG,SAAQ,SAAU,SAClC,2BAAa,gBAAI,MAAO,GAC3B;AAAA,QACA;AAAA,UAAC,+BAAAC;AAAA,UAAA;AAAA,YACA,IAAK;AAAA,YACL,OAAQ,gBAAgB;AAAA,YACxB,UAAW,CAAE,YAAa;AACzB,4BAAe,QAAQ,OAAO,KAAM;AACpC,sCAAwB;AAAA,YACzB;AAAA,YACA,MAAO;AAAA,YACP,SAAU;AAAA,YACV,WAAY,CAAE,UAAW;AACxB,kBACC,gCAAgB,QAAS,OAAO,OAAQ,KACxC,CAAE,YACD;AACD,sBAAM,OAAO,WAAW,cAAc;AAAA,cACvC;AAEA,kBAAK,MAAM,QAAQ,UAAW;AAC7B,sBAAM,eAAe;AAErB,yBAAU,KAAM;AAAA,cACjB;AAAA,YACD;AAAA;AAAA,QACD;AAAA,QACA,6CAAC,kBAAAC,sBAAA,EAAO,SAAQ,KAAI,SAAQ,YAAW,MAAI,MAC1C;AAAA,sDAAC,4BAAO,MAAK,WAAU,SAAQ,YAAW,SAAU,UACnD,sDAAC,kBAAAC,wBAAA,EAAW,8BAAI,QAAS,GAAG,GAC7B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,MAAK;AAAA,cACL,wBAAsB;AAAA,cACtB,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,UAAW;AAAA,cAEX,sDAAC,kBAAAA,wBAAA,EAAW,4BAAkB;AAAA;AAAA,UAC/B;AAAA,WACD;AAAA;AAAA;AAAA,EACD;AAEF;AAEA,IAAO,uBAAQ;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport TextareaAutosize from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tButton,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isKeyboardEvent } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { sanitizeCommentString } from './utils';\n\nfunction CommentForm( {\n\tonSubmit,\n\tonCancel,\n\tthread,\n\tsubmitButtonText,\n\tlabelText,\n} ) {\n\tconst [ inputComment, setInputComment ] = useState(\n\t\tthread?.content?.raw ?? ''\n\t);\n\n\tconst inputId = useInstanceId( CommentForm, 'comment-input' );\n\tconst isDisabled =\n\t\tinputComment === thread?.content?.raw ||\n\t\t! sanitizeCommentString( inputComment ).length;\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"editor-collab-sidebar-panel__comment-form\"\n\t\t\tspacing=\"4\"\n\t\t\tas=\"form\"\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSubmit( inputComment );\n\t\t\t\tsetInputComment( '' );\n\t\t\t} }\n\t\t>\n\t\t\t<VisuallyHidden as=\"label\" htmlFor={ inputId }>\n\t\t\t\t{ labelText ?? __( 'Note' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<TextareaAutosize\n\t\t\t\tid={ inputId }\n\t\t\t\tvalue={ inputComment ?? '' }\n\t\t\t\tonChange={ ( comment ) =>\n\t\t\t\t\tsetInputComment( comment.target.value )\n\t\t\t\t}\n\t\t\t\trows={ 1 }\n\t\t\t\tmaxRows={ 20 }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tisKeyboardEvent.primary( event, 'Enter' ) &&\n\t\t\t\t\t\t! isDisabled\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.target.parentNode.requestSubmit();\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t// Passing event for reply forms.\n\t\t\t\t\t\tonCancel( event );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<HStack spacing=\"2\" justify=\"flex-end\" wrap>\n\t\t\t\t<Button size=\"compact\" variant=\"tertiary\" onClick={ onCancel }>\n\t\t\t\t\t<Truncate>{ __( 'Cancel' ) }</Truncate>\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t>\n\t\t\t\t\t<Truncate>{ submitButtonText }</Truncate>\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default CommentForm;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qCAA6B;AAK7B,qBAAyB;AACzB,wBAMO;AACP,kBAAmB;AACnB,qBAA8B;AAC9B,sBAAgC;AAKhC,mBAAsC;AA6BnC;AA3BH,SAAS,YAAa;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,CAAE,cAAc,eAAgB,QAAI;AAAA,IACzC,QAAQ,SAAS,OAAO;AAAA,EACzB;AAEA,QAAM,cAAU,8BAAe,aAAa,eAAgB;AAC5D,QAAM,aACL,iBAAiB,QAAQ,SAAS,OAClC,KAAE,oCAAuB,YAAa,EAAE;AAEzC,SACC;AAAA,IAAC,kBAAAA;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,IAAG;AAAA,MACH,UAAW,CAAE,UAAW;AACvB,cAAM,eAAe;AACrB,iBAAU,YAAa;AACvB,wBAAiB,EAAG;AAAA,MACrB;AAAA,MAEA;AAAA,oDAAC,oCAAe,IAAG,SAAQ,SAAU,SAClC,2BAAa,gBAAI,MAAO,GAC3B;AAAA,QACA;AAAA,UAAC,+BAAAC;AAAA,UAAA;AAAA,YACA,IAAK;AAAA,YACL,OAAQ,gBAAgB;AAAA,YACxB,UAAW,CAAE,YACZ,gBAAiB,QAAQ,OAAO,KAAM;AAAA,YAEvC,MAAO;AAAA,YACP,SAAU;AAAA,YACV,WAAY,CAAE,UAAW;AACxB,kBACC,gCAAgB,QAAS,OAAO,OAAQ,KACxC,CAAE,YACD;AACD,sBAAM,OAAO,WAAW,cAAc;AAAA,cACvC;AAEA,kBAAK,MAAM,QAAQ,UAAW;AAC7B,sBAAM,eAAe;AAErB,yBAAU,KAAM;AAAA,cACjB;AAAA,YACD;AAAA;AAAA,QACD;AAAA,QACA,6CAAC,kBAAAC,sBAAA,EAAO,SAAQ,KAAI,SAAQ,YAAW,MAAI,MAC1C;AAAA,sDAAC,4BAAO,MAAK,WAAU,SAAQ,YAAW,SAAU,UACnD,sDAAC,kBAAAC,wBAAA,EAAW,8BAAI,QAAS,GAAG,GAC7B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,MAAK;AAAA,cACL,wBAAsB;AAAA,cACtB,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,UAAW;AAAA,cAEX,sDAAC,kBAAAA,wBAAA,EAAW,4BAAkB;AAAA;AAAA,UAC/B;AAAA,WACD;AAAA;AAAA;AAAA,EACD;AAEF;AAEA,IAAO,uBAAQ;",
6
6
  "names": ["VStack", "TextareaAutosize", "HStack", "Truncate"]
7
7
  }
@@ -48,6 +48,7 @@ var import_comment_author_info = __toESM(require("./comment-author-info.cjs"));
48
48
  var import_comment_form = __toESM(require("./comment-form.cjs"));
49
49
  var import_utils = require("./utils.cjs");
50
50
  var import_hooks = require("./hooks.cjs");
51
+ var import_floating_container = require("./floating-container.cjs");
51
52
  var import_add_comment = require("./add-comment.cjs");
52
53
  var import_store = require("../../store/index.cjs");
53
54
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -59,16 +60,9 @@ function Comments({
59
60
  onAddReply,
60
61
  onCommentDelete,
61
62
  commentSidebarRef,
62
- reflowComments,
63
- isFloating = false,
64
- commentLastUpdated
63
+ isFloating = false
65
64
  }) {
66
- const [heights, setHeights] = (0, import_element.useState)({});
67
- const [boardOffsets, setBoardOffsets] = (0, import_element.useState)({});
68
- const [blockRefs, setBlockRefs] = (0, import_element.useState)({});
69
- const { setCanvasMinHeight, selectNote } = (0, import_lock_unlock.unlock)(
70
- (0, import_data.useDispatch)(import_store.store)
71
- );
65
+ const { selectNote } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_store.store));
72
66
  const { selectBlock, toggleBlockSpotlight } = (0, import_lock_unlock.unlock)(
73
67
  (0, import_data.useDispatch)(import_block_editor.store)
74
68
  );
@@ -161,96 +155,13 @@ function Comments({
161
155
  selectNote(selectedNote);
162
156
  }
163
157
  }, [noteFocused, selectedNote, selectNote, commentSidebarRef]);
164
- (0, import_element.useEffect)(() => {
165
- const calculateAllOffsets = () => {
166
- const offsets = {};
167
- if (!isFloating) {
168
- return { offsets, minHeight: 0 };
169
- }
170
- const selectedThreadIndex = threads.findIndex(
171
- (t) => t.id === selectedNote
172
- );
173
- const breakIndex = selectedThreadIndex === -1 ? 0 : selectedThreadIndex;
174
- const selectedThreadData = threads[breakIndex];
175
- if (!selectedThreadData || !blockRefs[selectedThreadData.id]) {
176
- return { offsets, minHeight: 0 };
177
- }
178
- let blockElement = blockRefs[selectedThreadData.id];
179
- let blockRect = blockElement?.getBoundingClientRect();
180
- const selectedThreadTop = blockRect?.top || 0;
181
- const selectedThreadHeight = heights[selectedThreadData.id] || 0;
182
- offsets[selectedThreadData.id] = -16;
183
- let previousThreadData = {
184
- threadTop: selectedThreadTop - 16,
185
- threadHeight: selectedThreadHeight
186
- };
187
- for (let i = breakIndex + 1; i < threads.length; i++) {
188
- const thread = threads[i];
189
- if (!blockRefs[thread.id]) {
190
- continue;
191
- }
192
- blockElement = blockRefs[thread.id];
193
- blockRect = blockElement?.getBoundingClientRect();
194
- const threadTop = blockRect?.top || 0;
195
- const threadHeight = heights[thread.id] || 0;
196
- let additionalOffset = -16;
197
- const previousBottom = previousThreadData.threadTop + previousThreadData.threadHeight;
198
- if (threadTop < previousBottom + 16) {
199
- additionalOffset = previousBottom - threadTop + 20;
200
- }
201
- offsets[thread.id] = additionalOffset;
202
- previousThreadData = {
203
- threadTop: threadTop + additionalOffset,
204
- threadHeight
205
- };
206
- }
207
- let nextThreadData = {
208
- threadTop: selectedThreadTop - 16
209
- };
210
- for (let i = selectedThreadIndex - 1; i >= 0; i--) {
211
- const thread = threads[i];
212
- if (!blockRefs[thread.id]) {
213
- continue;
214
- }
215
- blockElement = blockRefs[thread.id];
216
- blockRect = blockElement?.getBoundingClientRect();
217
- const threadTop = blockRect?.top || 0;
218
- const threadHeight = heights[thread.id] || 0;
219
- let additionalOffset = -16;
220
- const threadBottom = threadTop + threadHeight;
221
- if (threadBottom > nextThreadData.threadTop) {
222
- additionalOffset = nextThreadData.threadTop - threadTop - threadHeight - 20;
223
- }
224
- offsets[thread.id] = additionalOffset;
225
- nextThreadData = {
226
- threadTop: threadTop + additionalOffset
227
- };
228
- }
229
- let editorMinHeight = 0;
230
- const lastThread = threads[threads.length - 1];
231
- if (blockRefs[lastThread.id]) {
232
- const lastBlockElement = blockRefs[lastThread.id];
233
- const lastBlockRect = lastBlockElement?.getBoundingClientRect();
234
- const lastThreadTop = lastBlockRect?.top || 0;
235
- const lastThreadHeight = heights[lastThread.id] || 0;
236
- const lastThreadOffset = offsets[lastThread.id] || 0;
237
- editorMinHeight = lastThreadTop + lastThreadHeight + lastThreadOffset + 32;
238
- }
239
- return { offsets, minHeight: editorMinHeight };
240
- };
241
- const { offsets: newOffsets, minHeight } = calculateAllOffsets();
242
- if (Object.keys(newOffsets).length > 0) {
243
- setBoardOffsets(newOffsets);
158
+ const { boardOffsets, registerThread, unregisterThread } = (0, import_hooks.useFloatingBoard)(
159
+ {
160
+ threads,
161
+ selectedNoteId: selectedNote,
162
+ isFloating
244
163
  }
245
- setCanvasMinHeight(minHeight);
246
- }, [
247
- heights,
248
- blockRefs,
249
- isFloating,
250
- threads,
251
- selectedNote,
252
- setCanvasMinHeight
253
- ]);
164
+ );
254
165
  const handleThreadNavigation = (event, thread, isSelected) => {
255
166
  if (event.defaultPrevented) {
256
167
  return;
@@ -283,9 +194,6 @@ function Comments({
283
194
  );
284
195
  }
285
196
  };
286
- const setBlockRef = (0, import_element.useCallback)((id, blockRef) => {
287
- setBlockRefs((prev) => ({ ...prev, [id]: blockRef }));
288
- }, []);
289
197
  const hasThreads = Array.isArray(threads) && threads.length > 0;
290
198
  if (!hasThreads && !isFloating) {
291
199
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -313,12 +221,11 @@ function Comments({
313
221
  onEditComment,
314
222
  isSelected: selectedNote === thread.id,
315
223
  commentSidebarRef,
316
- reflowComments,
317
- isFloating,
318
- calculatedOffset: boardOffsets[thread.id] ?? 0,
319
- setHeights,
320
- setBlockRef,
321
- commentLastUpdated,
224
+ floating: isFloating ? {
225
+ calculatedOffset: boardOffsets[thread.id] ?? 0,
226
+ registerThread,
227
+ unregisterThread
228
+ } : void 0,
322
229
  onKeyDown: (event) => handleThreadNavigation(
323
230
  event,
324
231
  thread,
@@ -336,22 +243,14 @@ function Thread({
336
243
  onCommentDelete,
337
244
  isSelected,
338
245
  commentSidebarRef,
339
- reflowComments,
340
- isFloating,
341
- calculatedOffset,
342
- setHeights,
343
- setBlockRef,
344
- commentLastUpdated,
246
+ floating,
345
247
  onKeyDown
346
248
  }) {
249
+ const isFloating = !!floating;
347
250
  const { toggleBlockHighlight, selectBlock, toggleBlockSpotlight } = (0, import_lock_unlock.unlock)(
348
251
  (0, import_data.useDispatch)(import_block_editor.store)
349
252
  );
350
253
  const { selectNote } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_store.store));
351
- const selectedNote = (0, import_data.useSelect)(
352
- (select) => (0, import_lock_unlock.unlock)(select(import_store.store)).getSelectedNote(),
353
- []
354
- );
355
254
  const relatedBlockElement = useBlockElement(thread.blockClientId);
356
255
  const debouncedToggleBlockHighlight = (0, import_compose.useDebounce)(
357
256
  toggleBlockHighlight,
@@ -359,11 +258,9 @@ function Thread({
359
258
  );
360
259
  const { y, refs } = (0, import_hooks.useFloatingThread)({
361
260
  thread,
362
- calculatedOffset,
363
- setHeights,
364
- setBlockRef,
365
- selectedThread: selectedNote,
366
- commentLastUpdated
261
+ calculatedOffset: floating?.calculatedOffset ?? 0,
262
+ registerThread: floating?.registerThread,
263
+ unregisterThread: floating?.unregisterThread
367
264
  });
368
265
  const isKeyboardTabbingRef = (0, import_element.useRef)(false);
369
266
  const onMouseEnter = () => {
@@ -429,19 +326,16 @@ function Thread({
429
326
  {
430
327
  onSubmit: onAddReply,
431
328
  commentSidebarRef,
432
- reflowComments,
433
- isFloating,
434
- y,
435
- refs
329
+ floating: { y, refs }
436
330
  }
437
331
  );
438
332
  }
439
333
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
440
- import_components.__experimentalVStack,
334
+ import_floating_container.FloatingContainer,
441
335
  {
336
+ floating: isFloating ? { y, refs } : void 0,
442
337
  className: (0, import_clsx.default)("editor-collab-sidebar-panel__thread", {
443
- "is-selected": isSelected,
444
- "is-floating": isFloating
338
+ "is-selected": isSelected
445
339
  }),
446
340
  id: `comment-thread-${thread.id}`,
447
341
  spacing: "3",
@@ -466,8 +360,6 @@ function Thread({
466
360
  role: "treeitem",
467
361
  "aria-label": ariaLabel,
468
362
  "aria-expanded": isSelected,
469
- ref: isFloating ? refs.setFloating : void 0,
470
- style: isFloating ? { top: y } : void 0,
471
363
  children: [
472
364
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
473
365
  import_components.Button,
@@ -505,8 +397,7 @@ function Thread({
505
397
  }
506
398
  }
507
399
  },
508
- onDelete: onCommentDelete,
509
- reflowComments
400
+ onDelete: onCommentDelete
510
401
  }
511
402
  ),
512
403
  isSelected && allReplies.map((reply) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -516,8 +407,7 @@ function Thread({
516
407
  parent: thread,
517
408
  isExpanded: isSelected,
518
409
  onEdit: onEditComment,
519
- onDelete: onCommentDelete,
520
- reflowComments
410
+ onDelete: onCommentDelete
521
411
  },
522
412
  reply.id
523
413
  )),
@@ -552,8 +442,7 @@ function Thread({
552
442
  parent: thread,
553
443
  isExpanded: isSelected,
554
444
  onEdit: onEditComment,
555
- onDelete: onCommentDelete,
556
- reflowComments
445
+ onDelete: onCommentDelete
557
446
  }
558
447
  ),
559
448
  isSelected && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.__experimentalVStack, { spacing: "2", role: "treeitem", children: [
@@ -590,8 +479,7 @@ function Thread({
590
479
  (0, import_i18n.__)("Reply to note %1$s by %2$s"),
591
480
  thread.id,
592
481
  thread.author_name
593
- ),
594
- reflowComments
482
+ )
595
483
  }
596
484
  ) })
597
485
  ] }),
@@ -612,14 +500,7 @@ function Thread({
612
500
  }
613
501
  );
614
502
  }
615
- var CommentBoard = ({
616
- thread,
617
- parent,
618
- isExpanded,
619
- onEdit,
620
- onDelete,
621
- reflowComments
622
- }) => {
503
+ var CommentBoard = ({ thread, parent, isExpanded, onEdit, onDelete }) => {
623
504
  const [actionState, setActionState] = (0, import_element.useState)(false);
624
505
  const [showConfirmDialog, setShowConfirmDialog] = (0, import_element.useState)(false);
625
506
  const actionButtonRef = (0, import_element.useRef)(null);
@@ -767,8 +648,7 @@ var CommentBoard = ({
767
648
  (0, import_i18n.__)("Edit note %1$s by %2$s"),
768
649
  thread.id,
769
650
  thread.author_name
770
- ),
771
- reflowComments
651
+ )
772
652
  }
773
653
  ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
774
654
  import_element.RawHTML,