@tldraw/commenting 0.0.0-bootstrap → 5.3.0-internal.1640468db8fd
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.
- package/commenting.css +284 -153
- package/dist-cjs/canvas/comment-body.js +1 -1
- package/dist-cjs/canvas/comment-body.js.map +2 -2
- package/dist-cjs/canvas/comment-drafts.js +54 -0
- package/dist-cjs/canvas/comment-drafts.js.map +7 -0
- package/dist-cjs/canvas/comment-render.js +2 -0
- package/dist-cjs/canvas/comment-render.js.map +2 -2
- package/dist-cjs/canvas/comment-tool.js +65 -12
- package/dist-cjs/canvas/comment-tool.js.map +2 -2
- package/dist-cjs/canvas/comments-filter-menu.js +54 -63
- package/dist-cjs/canvas/comments-filter-menu.js.map +2 -2
- package/dist-cjs/canvas/comments-overflow-menu.js +21 -27
- package/dist-cjs/canvas/comments-overflow-menu.js.map +2 -2
- package/dist-cjs/canvas/comments-overlay.js +304 -112
- package/dist-cjs/canvas/comments-overlay.js.map +2 -2
- package/dist-cjs/canvas/comments-sidebar.js +12 -18
- package/dist-cjs/canvas/comments-sidebar.js.map +2 -2
- package/dist-cjs/canvas/comments-visibility-toggle.js +66 -0
- package/dist-cjs/canvas/comments-visibility-toggle.js.map +7 -0
- package/dist-cjs/canvas/options.js +1 -0
- package/dist-cjs/canvas/options.js.map +2 -2
- package/dist-cjs/canvas/sidebar-filters.js +2 -2
- package/dist-cjs/canvas/sidebar-filters.js.map +2 -2
- package/dist-cjs/canvas/state.js +11 -0
- package/dist-cjs/canvas/state.js.map +2 -2
- package/dist-cjs/canvas/thread-state.js +8 -1
- package/dist-cjs/canvas/thread-state.js.map +2 -2
- package/dist-cjs/clustering/runtime.js +119 -7
- package/dist-cjs/clustering/runtime.js.map +2 -2
- package/dist-cjs/index.d.ts +126 -41
- package/dist-cjs/index.js +7 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/ui/avatar.js +14 -6
- package/dist-cjs/ui/avatar.js.map +2 -2
- package/dist-cjs/ui/byline.js +4 -4
- package/dist-cjs/ui/byline.js.map +2 -2
- package/dist-cjs/ui/comment-author.js +17 -0
- package/dist-cjs/ui/comment-author.js.map +7 -0
- package/dist-cjs/ui/comment-card.js +4 -4
- package/dist-cjs/ui/comment-card.js.map +2 -2
- package/dist-cjs/ui/comment-composer.js +92 -29
- package/dist-cjs/ui/comment-composer.js.map +2 -2
- package/dist-cjs/ui/comment-mention.js +1 -1
- package/dist-cjs/ui/comment-mention.js.map +2 -2
- package/dist-cjs/ui/comment-pin.js +23 -3
- package/dist-cjs/ui/comment-pin.js.map +2 -2
- package/dist-cjs/ui/comment-text.js +1 -1
- package/dist-cjs/ui/comment-text.js.map +2 -2
- package/dist-cjs/ui/comment-thread.js +6 -6
- package/dist-cjs/ui/comment-thread.js.map +2 -2
- package/dist-cjs/ui/comments-list.js +12 -12
- package/dist-cjs/ui/comments-list.js.map +2 -2
- package/dist-cjs/ui/count-badge.js +1 -1
- package/dist-cjs/ui/count-badge.js.map +2 -2
- package/dist-cjs/ui/empty-state.js +3 -3
- package/dist-cjs/ui/empty-state.js.map +2 -2
- package/dist-cjs/ui/format-time.js +3 -0
- package/dist-cjs/ui/format-time.js.map +2 -2
- package/dist-cjs/ui/mention-list.js +8 -8
- package/dist-cjs/ui/mention-list.js.map +2 -2
- package/dist-cjs/ui/mention-suggestion.js +3 -3
- package/dist-cjs/ui/mention-suggestion.js.map +2 -2
- package/dist-cjs/ui/mention.js +1 -1
- package/dist-cjs/ui/mention.js.map +2 -2
- package/dist-cjs/ui/reaction.js +11 -4
- package/dist-cjs/ui/reaction.js.map +2 -2
- package/dist-cjs/ui/reactions.js +10 -2
- package/dist-cjs/ui/reactions.js.map +2 -2
- package/dist-cjs/ui/send-button.js +1 -1
- package/dist-cjs/ui/send-button.js.map +2 -2
- package/dist-cjs/ui/tooltip-button.js +32 -0
- package/dist-cjs/ui/tooltip-button.js.map +7 -0
- package/dist-esm/canvas/comment-body.mjs +1 -1
- package/dist-esm/canvas/comment-body.mjs.map +2 -2
- package/dist-esm/canvas/comment-drafts.mjs +34 -0
- package/dist-esm/canvas/comment-drafts.mjs.map +7 -0
- package/dist-esm/canvas/comment-render.mjs +2 -0
- package/dist-esm/canvas/comment-render.mjs.map +2 -2
- package/dist-esm/canvas/comment-tool.mjs +67 -14
- package/dist-esm/canvas/comment-tool.mjs.map +2 -2
- package/dist-esm/canvas/comments-filter-menu.mjs +54 -63
- package/dist-esm/canvas/comments-filter-menu.mjs.map +2 -2
- package/dist-esm/canvas/comments-overflow-menu.mjs +22 -27
- package/dist-esm/canvas/comments-overflow-menu.mjs.map +2 -2
- package/dist-esm/canvas/comments-overlay.mjs +322 -114
- package/dist-esm/canvas/comments-overlay.mjs.map +2 -2
- package/dist-esm/canvas/comments-sidebar.mjs +15 -21
- package/dist-esm/canvas/comments-sidebar.mjs.map +2 -2
- package/dist-esm/canvas/comments-visibility-toggle.mjs +46 -0
- package/dist-esm/canvas/comments-visibility-toggle.mjs.map +7 -0
- package/dist-esm/canvas/options.mjs +1 -0
- package/dist-esm/canvas/options.mjs.map +2 -2
- package/dist-esm/canvas/sidebar-filters.mjs +2 -2
- package/dist-esm/canvas/sidebar-filters.mjs.map +2 -2
- package/dist-esm/canvas/state.mjs +11 -0
- package/dist-esm/canvas/state.mjs.map +2 -2
- package/dist-esm/canvas/thread-state.mjs +8 -1
- package/dist-esm/canvas/thread-state.mjs.map +2 -2
- package/dist-esm/clustering/runtime.mjs +119 -7
- package/dist-esm/clustering/runtime.mjs.map +2 -2
- package/dist-esm/index.d.mts +126 -41
- package/dist-esm/index.mjs +11 -1
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/ui/avatar.mjs +14 -6
- package/dist-esm/ui/avatar.mjs.map +2 -2
- package/dist-esm/ui/byline.mjs +4 -4
- package/dist-esm/ui/byline.mjs.map +2 -2
- package/dist-esm/ui/comment-author.mjs +1 -0
- package/dist-esm/ui/comment-author.mjs.map +7 -0
- package/dist-esm/ui/comment-card.mjs +4 -4
- package/dist-esm/ui/comment-card.mjs.map +2 -2
- package/dist-esm/ui/comment-composer.mjs +93 -30
- package/dist-esm/ui/comment-composer.mjs.map +2 -2
- package/dist-esm/ui/comment-mention.mjs +1 -1
- package/dist-esm/ui/comment-mention.mjs.map +2 -2
- package/dist-esm/ui/comment-pin.mjs +23 -3
- package/dist-esm/ui/comment-pin.mjs.map +2 -2
- package/dist-esm/ui/comment-text.mjs +1 -1
- package/dist-esm/ui/comment-text.mjs.map +2 -2
- package/dist-esm/ui/comment-thread.mjs +6 -6
- package/dist-esm/ui/comment-thread.mjs.map +2 -2
- package/dist-esm/ui/comments-list.mjs +12 -12
- package/dist-esm/ui/comments-list.mjs.map +2 -2
- package/dist-esm/ui/count-badge.mjs +1 -1
- package/dist-esm/ui/count-badge.mjs.map +2 -2
- package/dist-esm/ui/empty-state.mjs +3 -3
- package/dist-esm/ui/empty-state.mjs.map +2 -2
- package/dist-esm/ui/format-time.mjs +3 -0
- package/dist-esm/ui/format-time.mjs.map +2 -2
- package/dist-esm/ui/mention-list.mjs +8 -8
- package/dist-esm/ui/mention-list.mjs.map +2 -2
- package/dist-esm/ui/mention-suggestion.mjs +3 -3
- package/dist-esm/ui/mention-suggestion.mjs.map +2 -2
- package/dist-esm/ui/mention.mjs +1 -1
- package/dist-esm/ui/mention.mjs.map +2 -2
- package/dist-esm/ui/reaction.mjs +11 -4
- package/dist-esm/ui/reaction.mjs.map +2 -2
- package/dist-esm/ui/reactions.mjs +10 -2
- package/dist-esm/ui/reactions.mjs.map +2 -2
- package/dist-esm/ui/send-button.mjs +1 -1
- package/dist-esm/ui/send-button.mjs.map +2 -2
- package/dist-esm/ui/tooltip-button.mjs +12 -0
- package/dist-esm/ui/tooltip-button.mjs.map +7 -0
- package/package.json +3 -3
- package/src/canvas/canvas.css +79 -36
- package/src/canvas/comment-body.tsx +1 -1
- package/src/canvas/comment-drafts.test.ts +55 -0
- package/src/canvas/comment-drafts.ts +46 -0
- package/src/canvas/comment-render.test.ts +1 -1
- package/src/canvas/comment-render.ts +7 -2
- package/src/canvas/comment-tool.tsx +98 -17
- package/src/canvas/comments-filter-menu.tsx +27 -33
- package/src/canvas/comments-overflow-menu.tsx +13 -21
- package/src/canvas/comments-overlay.tsx +441 -145
- package/src/canvas/comments-sidebar.tsx +27 -28
- package/src/canvas/comments-visibility-toggle.tsx +50 -0
- package/src/canvas/options.ts +25 -0
- package/src/canvas/sidebar-filters.ts +4 -3
- package/src/canvas/state.ts +22 -0
- package/src/canvas/thread-state.ts +16 -3
- package/src/clustering/runtime.test.ts +183 -7
- package/src/clustering/runtime.ts +164 -15
- package/src/index.ts +7 -0
- package/src/ui/avatar.tsx +15 -11
- package/src/ui/byline.tsx +6 -5
- package/src/ui/comment-author.ts +15 -0
- package/src/ui/comment-card.tsx +6 -5
- package/src/ui/comment-composer.tsx +122 -33
- package/src/ui/comment-mention.ts +2 -2
- package/src/ui/comment-pin.tsx +35 -4
- package/src/ui/comment-text.tsx +1 -1
- package/src/ui/comment-thread.tsx +8 -6
- package/src/ui/comments-list.tsx +19 -14
- package/src/ui/comments.css +205 -117
- package/src/ui/count-badge.tsx +1 -1
- package/src/ui/empty-state.tsx +3 -3
- package/src/ui/format-time.ts +5 -0
- package/src/ui/mention-list.tsx +13 -16
- package/src/ui/mention-suggestion.tsx +3 -3
- package/src/ui/mention.tsx +1 -1
- package/src/ui/reaction.tsx +6 -3
- package/src/ui/reactions.tsx +6 -2
- package/src/ui/send-button.tsx +1 -1
- package/src/ui/tooltip-button.tsx +20 -0
package/src/ui/comment-pin.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode } from 'react'
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react'
|
|
2
2
|
|
|
3
3
|
/** @public */
|
|
4
4
|
export interface CommentPinProps {
|
|
@@ -8,14 +8,45 @@ export interface CommentPinProps {
|
|
|
8
8
|
resolved?: boolean
|
|
9
9
|
/** The pin's thread is open — shows the active/selected indicator state. */
|
|
10
10
|
open?: boolean
|
|
11
|
+
/** Background color (any CSS color). Falls back to the default pin tint.
|
|
12
|
+
* Ignored while resolved — resolved pins are always grey. */
|
|
13
|
+
color?: string
|
|
11
14
|
}
|
|
12
15
|
|
|
16
|
+
/* An inline check, not a text glyph — the '✓' character sits off-baseline and varies by font. */
|
|
17
|
+
const resolvedCheck = (
|
|
18
|
+
<svg
|
|
19
|
+
viewBox="0 0 24 24"
|
|
20
|
+
width="15"
|
|
21
|
+
height="15"
|
|
22
|
+
fill="none"
|
|
23
|
+
stroke="currentColor"
|
|
24
|
+
strokeWidth="2.5"
|
|
25
|
+
strokeLinecap="round"
|
|
26
|
+
strokeLinejoin="round"
|
|
27
|
+
aria-hidden="true"
|
|
28
|
+
>
|
|
29
|
+
<path d="M4 12.5l5 5L20 6.5" />
|
|
30
|
+
</svg>
|
|
31
|
+
)
|
|
32
|
+
|
|
13
33
|
/** A canvas comment marker: shows its `children` (or a check when resolved). Purely
|
|
14
34
|
* presentational — it reflects open/resolved state via CSS; wrap it to make it clickable.
|
|
15
35
|
* @public @react */
|
|
16
|
-
export function CommentPin({ children, resolved, open }: CommentPinProps) {
|
|
17
|
-
const className = [
|
|
36
|
+
export function CommentPin({ children, resolved, open, color }: CommentPinProps) {
|
|
37
|
+
const className = [
|
|
38
|
+
'tlui-cmt-pin',
|
|
39
|
+
resolved && 'tlui-cmt-pin--resolved',
|
|
40
|
+
open && 'tlui-cmt-pin--open',
|
|
41
|
+
]
|
|
18
42
|
.filter(Boolean)
|
|
19
43
|
.join(' ')
|
|
20
|
-
|
|
44
|
+
// A custom property rather than backgroundColor, so the open ring follows the tint too.
|
|
45
|
+
const style =
|
|
46
|
+
color && !resolved ? ({ '--tlui-cmt-pin-color': color } as CSSProperties) : undefined
|
|
47
|
+
return (
|
|
48
|
+
<div className={className} style={style}>
|
|
49
|
+
{resolved ? resolvedCheck : children}
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
21
52
|
}
|
package/src/ui/comment-text.tsx
CHANGED
|
@@ -8,5 +8,5 @@ export interface CommentTextProps {
|
|
|
8
8
|
|
|
9
9
|
/** A comment's body, rendered as markdown (bold, italic, code, links, lists). @public @react */
|
|
10
10
|
export function CommentText({ text }: CommentTextProps) {
|
|
11
|
-
return <div className="cmt-text">{renderMarkdown(text)}</div>
|
|
11
|
+
return <div className="tlui-cmt-text">{renderMarkdown(text)}</div>
|
|
12
12
|
}
|
|
@@ -33,17 +33,19 @@ export function CommentThread({
|
|
|
33
33
|
renderComment,
|
|
34
34
|
}: CommentThreadProps) {
|
|
35
35
|
return (
|
|
36
|
-
<div className="cmt-thread">
|
|
36
|
+
<div className="tlui-cmt-thread">
|
|
37
37
|
{(header !== undefined || headerActions !== undefined) && (
|
|
38
|
-
<div className="cmt-thread__header">
|
|
39
|
-
<span className="cmt-thread__title">{header}</span>
|
|
38
|
+
<div className="tlui-cmt-thread__header">
|
|
39
|
+
<span className="tlui-cmt-thread__title">{header}</span>
|
|
40
40
|
{headerActions !== undefined && (
|
|
41
|
-
<div className="cmt-thread__actions">{headerActions}</div>
|
|
41
|
+
<div className="tlui-cmt-thread__actions">{headerActions}</div>
|
|
42
42
|
)}
|
|
43
43
|
</div>
|
|
44
44
|
)}
|
|
45
|
-
{resolvedBanner !== undefined &&
|
|
46
|
-
|
|
45
|
+
{resolvedBanner !== undefined && (
|
|
46
|
+
<div className="tlui-cmt-thread__resolved">{resolvedBanner}</div>
|
|
47
|
+
)}
|
|
48
|
+
<div className="tlui-cmt-thread__list">
|
|
47
49
|
{comments.map((comment, i) => (
|
|
48
50
|
<div key={i}>
|
|
49
51
|
{renderComment ? renderComment(comment, i) : <CommentCard {...comment} />}
|
package/src/ui/comments-list.tsx
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ReactNode } from 'react'
|
|
2
2
|
import { Avatar } from './avatar'
|
|
3
3
|
import { Byline } from './byline'
|
|
4
|
+
import { CommentAuthor } from './comment-author'
|
|
4
5
|
|
|
5
6
|
/** @public */
|
|
6
7
|
export interface CommentListItemProps {
|
|
7
8
|
id: string
|
|
8
|
-
author:
|
|
9
|
+
author: CommentAuthor
|
|
9
10
|
/** A short preview of the thread — e.g. the first comment's body. */
|
|
10
11
|
preview: ReactNode
|
|
11
12
|
/** ISO datetime of the thread's first comment. */
|
|
@@ -52,17 +53,17 @@ export function CommentsList({
|
|
|
52
53
|
renderItem,
|
|
53
54
|
}: CommentsListProps) {
|
|
54
55
|
return (
|
|
55
|
-
<div className="cmt-list">
|
|
56
|
+
<div className="tlui-cmt-list">
|
|
56
57
|
{(header !== undefined || headerAction) && (
|
|
57
|
-
<div className="cmt-list__header">
|
|
58
|
-
{header !== undefined && <span className="cmt-list__header-title">{header}</span>}
|
|
58
|
+
<div className="tlui-cmt-list__header">
|
|
59
|
+
{header !== undefined && <span className="tlui-cmt-list__header-title">{header}</span>}
|
|
59
60
|
{headerAction}
|
|
60
61
|
</div>
|
|
61
62
|
)}
|
|
62
63
|
{items.length === 0 ? (
|
|
63
|
-
<div className="cmt-list__empty">{empty}</div>
|
|
64
|
+
<div className="tlui-cmt-list__empty">{empty}</div>
|
|
64
65
|
) : (
|
|
65
|
-
<div className="cmt-list__items">
|
|
66
|
+
<div className="tlui-cmt-list__items">
|
|
66
67
|
{items.map((item) =>
|
|
67
68
|
renderItem ? (
|
|
68
69
|
renderItem(item)
|
|
@@ -99,27 +100,31 @@ function CommentListItem({
|
|
|
99
100
|
return (
|
|
100
101
|
<button
|
|
101
102
|
type="button"
|
|
102
|
-
className={
|
|
103
|
+
className={
|
|
104
|
+
selected ? 'tlui-cmt-list__item tlui-cmt-list__item--selected' : 'tlui-cmt-list__item'
|
|
105
|
+
}
|
|
103
106
|
data-resolved={resolved || undefined}
|
|
104
107
|
onClick={handleClick}
|
|
105
108
|
>
|
|
106
|
-
<Avatar
|
|
107
|
-
<div className="cmt-list__item-body">
|
|
109
|
+
<Avatar author={author} />
|
|
110
|
+
<div className="tlui-cmt-list__item-body">
|
|
108
111
|
<Byline author={author} date={date} />
|
|
109
|
-
<div className="cmt-list__item-preview">{preview}</div>
|
|
112
|
+
<div className="tlui-cmt-list__item-preview">{preview}</div>
|
|
110
113
|
{(resolved || page !== undefined) && (
|
|
111
|
-
<div className="cmt-list__item-meta">
|
|
114
|
+
<div className="tlui-cmt-list__item-meta">
|
|
112
115
|
{resolved && (
|
|
113
|
-
<span className="cmt-list__item-resolved">
|
|
116
|
+
<span className="tlui-cmt-list__item-resolved">
|
|
114
117
|
<CheckIcon />
|
|
115
118
|
{resolvedLabel}
|
|
116
119
|
</span>
|
|
117
120
|
)}
|
|
118
|
-
{page !== undefined && <span className="cmt-list__item-page">{page}</span>}
|
|
121
|
+
{page !== undefined && <span className="tlui-cmt-list__item-page">{page}</span>}
|
|
119
122
|
</div>
|
|
120
123
|
)}
|
|
121
124
|
</div>
|
|
122
|
-
{count !== undefined && count > 1 &&
|
|
125
|
+
{count !== undefined && count > 1 && (
|
|
126
|
+
<span className="tlui-cmt-list__item-count">{count}</span>
|
|
127
|
+
)}
|
|
123
128
|
</button>
|
|
124
129
|
)
|
|
125
130
|
}
|