@things-factory/worklist 10.0.19 → 10.1.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 (215) hide show
  1. package/dist-client/activity-cells.d.ts +21 -0
  2. package/dist-client/activity-cells.js +117 -0
  3. package/dist-client/activity-cells.js.map +1 -0
  4. package/dist-client/activity-summary-generator.js +57 -11
  5. package/dist-client/activity-summary-generator.js.map +1 -1
  6. package/dist-client/approval-progress.d.ts +18 -0
  7. package/dist-client/approval-progress.js +31 -0
  8. package/dist-client/approval-progress.js.map +1 -0
  9. package/dist-client/bootstrap.js +6 -11
  10. package/dist-client/bootstrap.js.map +1 -1
  11. package/dist-client/chip-filters.d.ts +53 -0
  12. package/dist-client/chip-filters.js +60 -0
  13. package/dist-client/chip-filters.js.map +1 -0
  14. package/dist-client/components/activity-approval-ribon.d.ts +19 -0
  15. package/dist-client/components/activity-approval-ribon.js +50 -126
  16. package/dist-client/components/activity-approval-ribon.js.map +1 -1
  17. package/dist-client/components/activity-fields.d.ts +50 -0
  18. package/dist-client/components/activity-fields.js +393 -0
  19. package/dist-client/components/activity-fields.js.map +1 -0
  20. package/dist-client/components/activity-instance-ribon.d.ts +19 -0
  21. package/dist-client/components/activity-instance-ribon.js +55 -122
  22. package/dist-client/components/activity-instance-ribon.js.map +1 -1
  23. package/dist-client/components/activity-thread-ribon.d.ts +25 -0
  24. package/dist-client/components/activity-thread-ribon.js +64 -121
  25. package/dist-client/components/activity-thread-ribon.js.map +1 -1
  26. package/dist-client/components/activity-thread-timeline.d.ts +14 -2
  27. package/dist-client/components/activity-thread-timeline.js +234 -104
  28. package/dist-client/components/activity-thread-timeline.js.map +1 -1
  29. package/dist-client/components/state-ribon.d.ts +40 -0
  30. package/dist-client/components/state-ribon.js +200 -0
  31. package/dist-client/components/state-ribon.js.map +1 -0
  32. package/dist-client/due.d.ts +16 -0
  33. package/dist-client/due.js +78 -0
  34. package/dist-client/due.js.map +1 -0
  35. package/dist-client/pages/activity/activity-list-page.js +4 -6
  36. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  37. package/dist-client/pages/activity-approval/activity-approval-list-page.js +2 -1
  38. package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -1
  39. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +52 -5
  40. package/dist-client/pages/activity-approval/activity-approval-page.js +265 -118
  41. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  42. package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +0 -1
  43. package/dist-client/pages/activity-instance/activity-instance-list-page.js +8 -24
  44. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -1
  45. package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +1 -0
  46. package/dist-client/pages/activity-instance/activity-instance-start-page.js +7 -0
  47. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  48. package/dist-client/pages/activity-instance/activity-instance-view.js +1 -1
  49. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
  50. package/dist-client/pages/activity-stats/activity-stats-list-page.js +2 -1
  51. package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -1
  52. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +30 -4
  53. package/dist-client/pages/activity-thread/activity-thread-page.js +142 -66
  54. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  55. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +17 -6
  56. package/dist-client/pages/activity-thread/activity-thread-view-page.js +118 -65
  57. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  58. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +24 -7
  59. package/dist-client/pages/activity-thread/activity-thread-view.js +84 -308
  60. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -1
  61. package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +1 -1
  62. package/dist-client/pages/installable-activity/installable-activity-list-page.js +13 -9
  63. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  64. package/dist-client/pages/todo/approval-done-list-page.d.ts +1 -0
  65. package/dist-client/pages/todo/approval-done-list-page.js +111 -58
  66. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -1
  67. package/dist-client/pages/todo/approval-pending-list-page.d.ts +32 -1
  68. package/dist-client/pages/todo/approval-pending-list-page.js +485 -130
  69. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  70. package/dist-client/pages/todo/done-list-calendar-page.d.ts +2 -0
  71. package/dist-client/pages/todo/done-list-calendar-page.js +213 -29
  72. package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -1
  73. package/dist-client/pages/todo/done-list-page.d.ts +1 -0
  74. package/dist-client/pages/todo/done-list-page.js +126 -62
  75. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  76. package/dist-client/pages/todo/draft-list-page.d.ts +1 -0
  77. package/dist-client/pages/todo/draft-list-page.js +82 -34
  78. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  79. package/dist-client/pages/todo/pickable-list-page.js +6 -10
  80. package/dist-client/pages/todo/pickable-list-page.js.map +1 -1
  81. package/dist-client/pages/todo/todo-list-page.d.ts +1 -1
  82. package/dist-client/pages/todo/todo-list-page.js +102 -78
  83. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  84. package/dist-client/route.d.ts +1 -1
  85. package/dist-client/route.js +0 -6
  86. package/dist-client/route.js.map +1 -1
  87. package/dist-client/templates/activity-approval-context-template.js +60 -138
  88. package/dist-client/templates/activity-approval-context-template.js.map +1 -1
  89. package/dist-client/templates/activity-instance-context-template.js +13 -172
  90. package/dist-client/templates/activity-instance-context-template.js.map +1 -1
  91. package/dist-client/templates/activity-thread-context-template.js +39 -131
  92. package/dist-client/templates/activity-thread-context-template.js.map +1 -1
  93. package/dist-client/templates/context-panel.d.ts +26 -0
  94. package/dist-client/templates/context-panel.js +182 -0
  95. package/dist-client/templates/context-panel.js.map +1 -0
  96. package/dist-client/tsconfig.tsbuildinfo +1 -1
  97. package/dist-client/when.d.ts +4 -0
  98. package/dist-client/when.js +72 -0
  99. package/dist-client/when.js.map +1 -0
  100. package/dist-server/controllers/activity-approval/_abort.js +2 -1
  101. package/dist-server/controllers/activity-approval/_abort.js.map +1 -1
  102. package/dist-server/controllers/activity-approval/approval-line.d.ts +106 -0
  103. package/dist-server/controllers/activity-approval/approval-line.js +151 -0
  104. package/dist-server/controllers/activity-approval/approval-line.js.map +1 -0
  105. package/dist-server/controllers/activity-approval/approve.js +61 -51
  106. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  107. package/dist-server/controllers/activity-approval/claim.d.ts +42 -0
  108. package/dist-server/controllers/activity-approval/claim.js +77 -0
  109. package/dist-server/controllers/activity-approval/claim.js.map +1 -0
  110. package/dist-server/controllers/activity-approval/create-approval.d.ts +41 -0
  111. package/dist-server/controllers/activity-approval/create-approval.js +78 -0
  112. package/dist-server/controllers/activity-approval/create-approval.js.map +1 -0
  113. package/dist-server/controllers/activity-approval/delegate.d.ts +16 -0
  114. package/dist-server/controllers/activity-approval/delegate.js +43 -7
  115. package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
  116. package/dist-server/controllers/activity-approval/opinion.d.ts +10 -0
  117. package/dist-server/controllers/activity-approval/opinion.js +43 -0
  118. package/dist-server/controllers/activity-approval/opinion.js.map +1 -0
  119. package/dist-server/controllers/activity-approval/reject.js +21 -1
  120. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  121. package/dist-server/controllers/activity-approval/save.js +26 -2
  122. package/dist-server/controllers/activity-approval/save.js.map +1 -1
  123. package/dist-server/controllers/activity-installation/activity-installation-controller.d.ts +26 -0
  124. package/dist-server/controllers/activity-installation/activity-installation-controller.js +45 -0
  125. package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -1
  126. package/dist-server/controllers/activity-instance/approval-expectation.d.ts +34 -0
  127. package/dist-server/controllers/activity-instance/approval-expectation.js +18 -0
  128. package/dist-server/controllers/activity-instance/approval-expectation.js.map +1 -0
  129. package/dist-server/controllers/activity-instance/issue.js +32 -0
  130. package/dist-server/controllers/activity-instance/issue.js.map +1 -1
  131. package/dist-server/controllers/activity-thread/restart.js +17 -1
  132. package/dist-server/controllers/activity-thread/restart.js.map +1 -1
  133. package/dist-server/controllers/activity-thread/submit.js +23 -43
  134. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  135. package/dist-server/controllers/common.js +46 -0
  136. package/dist-server/controllers/common.js.map +1 -1
  137. package/dist-server/controllers/index.d.ts +1 -0
  138. package/dist-server/controllers/index.js +8 -0
  139. package/dist-server/controllers/index.js.map +1 -1
  140. package/dist-server/service/activity/activity-mutation.js +25 -5
  141. package/dist-server/service/activity/activity-mutation.js.map +1 -1
  142. package/dist-server/service/activity/activity-type.d.ts +14 -0
  143. package/dist-server/service/activity/activity-type.js +8 -0
  144. package/dist-server/service/activity/activity-type.js.map +1 -1
  145. package/dist-server/service/activity/activity.d.ts +18 -0
  146. package/dist-server/service/activity/activity.js +5 -0
  147. package/dist-server/service/activity/activity.js.map +1 -1
  148. package/dist-server/service/activity-approval/activity-approval-mutation.js +3 -2
  149. package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -1
  150. package/dist-server/service/activity-approval/activity-approval-query.d.ts +19 -1
  151. package/dist-server/service/activity-approval/activity-approval-query.js +186 -56
  152. package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
  153. package/dist-server/service/activity-approval/activity-approval.d.ts +29 -1
  154. package/dist-server/service/activity-approval/activity-approval.js +19 -0
  155. package/dist-server/service/activity-approval/activity-approval.js.map +1 -1
  156. package/dist-server/service/activity-approval/my-pending-approvals.d.ts +21 -0
  157. package/dist-server/service/activity-approval/my-pending-approvals.js +40 -0
  158. package/dist-server/service/activity-approval/my-pending-approvals.js.map +1 -0
  159. package/dist-server/service/activity-instance/activity-instance-type.d.ts +20 -0
  160. package/dist-server/service/activity-instance/activity-instance-type.js +11 -0
  161. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
  162. package/dist-server/service/activity-instance/activity-instance.d.ts +6 -0
  163. package/dist-server/service/activity-instance/activity-instance.js +5 -0
  164. package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
  165. package/dist-server/service/activity-stats/activity-stats-query.d.ts +5 -0
  166. package/dist-server/service/activity-stats/activity-stats-query.js +149 -11
  167. package/dist-server/service/activity-stats/activity-stats-query.js.map +1 -1
  168. package/dist-server/service/activity-stats/activity-stats-type.d.ts +19 -6
  169. package/dist-server/service/activity-stats/activity-stats-type.js +37 -10
  170. package/dist-server/service/activity-stats/activity-stats-type.js.map +1 -1
  171. package/dist-server/service/activity-stats/event-placement.d.ts +55 -0
  172. package/dist-server/service/activity-stats/event-placement.js +82 -0
  173. package/dist-server/service/activity-stats/event-placement.js.map +1 -0
  174. package/dist-server/service/activity-thread/activity-thread-query.js +48 -24
  175. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  176. package/dist-server/service/activity-thread/my-open-threads.d.ts +15 -0
  177. package/dist-server/service/activity-thread/my-open-threads.js +40 -0
  178. package/dist-server/service/activity-thread/my-open-threads.js.map +1 -0
  179. package/dist-server/service/activity-thread/todo-order.d.ts +49 -0
  180. package/dist-server/service/activity-thread/todo-order.js +70 -0
  181. package/dist-server/service/activity-thread/todo-order.js.map +1 -0
  182. package/dist-server/service/installable-activity/installable-activity-mutation.d.ts +6 -0
  183. package/dist-server/service/installable-activity/installable-activity-mutation.js +7 -24
  184. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -1
  185. package/dist-server/service/nulls-last.d.ts +30 -0
  186. package/dist-server/service/nulls-last.js +37 -0
  187. package/dist-server/service/nulls-last.js.map +1 -0
  188. package/dist-server/tsconfig.tsbuildinfo +1 -1
  189. package/helps/dataset/activity-instance-search-page.ko.md +5 -0
  190. package/helps/dataset/activity-instance-search-page.md +13 -0
  191. package/helps/worklist/activity-approval.ko.md +5 -0
  192. package/helps/worklist/activity-approval.md +14 -0
  193. package/helps/worklist/activity-bank-page.ko.md +5 -0
  194. package/helps/worklist/activity-bank-page.md +13 -0
  195. package/helps/worklist/activity-reporter-list.ko.md +5 -0
  196. package/helps/worklist/activity-reporter-list.md +13 -0
  197. package/helps/worklist/activity-store.ko.md +5 -0
  198. package/helps/worklist/activity-store.md +13 -0
  199. package/helps/worklist/activity-template.ko.md +5 -0
  200. package/helps/worklist/activity-template.md +13 -0
  201. package/helps/worklist/installable-activity.ko.md +5 -0
  202. package/helps/worklist/installable-activity.md +13 -0
  203. package/package.json +13 -12
  204. package/things-factory.config.js +0 -5
  205. package/translations/en.json +129 -51
  206. package/translations/ja.json +130 -52
  207. package/translations/ko.json +82 -4
  208. package/translations/ms.json +129 -51
  209. package/translations/zh.json +132 -54
  210. package/dist-client/pages/dashboard/dashboard-home.d.ts +0 -1
  211. package/dist-client/pages/dashboard/dashboard-home.js +0 -22
  212. package/dist-client/pages/dashboard/dashboard-home.js.map +0 -1
  213. package/dist-client/pages/worklist-home.d.ts +0 -1
  214. package/dist-client/pages/worklist-home.js +0 -17
  215. package/dist-client/pages/worklist-home.js.map +0 -1
@@ -4,20 +4,23 @@ import '../../components/activity-thread-ribon.js';
4
4
  import '../../components/activity-thread-timeline.js';
5
5
  import './activity-thread-view.js';
6
6
  import gql from 'graphql-tag';
7
- import { css, html } from 'lit';
7
+ import { css, html, nothing } from 'lit';
8
8
  import { unsafeHTML } from 'lit-html/directives/unsafe-html.js';
9
- import { customElement, query, state } from 'lit/decorators.js';
9
+ import { customElement, state } from 'lit/decorators.js';
10
10
  import { keyed } from 'lit/directives/keyed.js';
11
11
  import { client } from '@operato/graphql';
12
12
  import { i18next, localize } from '@operato/i18n';
13
13
  import { PageView } from '@operato/shell';
14
14
  import { ScrollbarStyles, CommonButtonStyles } from '@operato/styles';
15
15
  import { provider } from '@things-factory/board-ui/dist-client/board-provider.js';
16
+ import { ActivityFieldsStyles } from '../../components/activity-fields.js';
16
17
  const ActivityThreadFetchResult = `\
17
18
  { id
18
19
  state
19
20
  dueAt
20
21
  assignedAt
22
+ startedAt
23
+ terminatedAt
21
24
  assignee { id
22
25
  name
23
26
  }
@@ -56,6 +59,7 @@ const ActivityThreadFetchResult = `\
56
59
  options
57
60
  quantifier
58
61
  spec
62
+ hidden
59
63
  }
60
64
  }
61
65
  approvalLine { type
@@ -88,48 +92,107 @@ export const ActivityThreadStatus = { Unassigned: 'unassigned',
88
92
  Aborted: 'aborted'
89
93
  };
90
94
  let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18next)(PageView) {
95
+ constructor() {
96
+ super(...arguments);
97
+ /**
98
+ * 조회를 마쳤나 — **「아직 안 읽었다」와 「없다」는 다르다.**
99
+ *
100
+ * 목록에서 줄을 눌러 들어온 사람이 방금 본 건이 없다는 말을 먼저 읽지 않게, 조회가 끝난 뒤에만
101
+ * 그 말을 한다.
102
+ */
103
+ this.loaded = false;
104
+ }
91
105
  static { this.styles = [
92
106
  ScrollbarStyles,
107
+ ActivityFieldsStyles,
93
108
  css `
94
- :host { display: flex;
109
+ :host {
110
+ display: flex;
95
111
  flex-direction: column;
96
112
 
97
113
  width: 100%;
98
114
  overflow: auto;
99
- }
115
+ background: var(--ui-bg, #f0f2f4);
116
+ color: var(--ui-ink, #17242c);
117
+ font-size: var(--ui-t-body, 13px);
118
+ }
100
119
 
101
- ox-board-viewer { width: 100%;
102
- height: 100%;
103
- }
120
+ /* 카드가 담아 주므로 안에 들어오는 화면은 자기 면과 여백을 갖지 않는다. */
121
+ /*
122
+ * ── 줄어들지 않는다 — 줄어들면 본문이 잘린다 (2026-09-07) ──────────────
123
+ * 이 칸은 flex 항목인데 크기를 안 정해 두어 기본값 flex: 0 1 auto 로 있었다. **1 이
124
+ * 줄어든다는 뜻이다** — 세로가 모자라면 브라우저가 이 칸부터 줄인다. 그런데 여기엔
125
+ * overflow: hidden 이 걸려 있어서(카드 모서리를 따라 자르려고) 줄어든 만큼이 **스크롤도
126
+ * 없이 사라진다.**
127
+ *
128
+ * 실측(1400x620): 이 칸이 242px 로 줄었는데 안의 내용은 362px 이었다. 「업무 내용」 절이
129
+ * 276~464 에 있어 대부분이 잘렸고, 잘린 자리 바로 아래에서 타임라인이 시작하니 **타임라인이
130
+ * 본문을 덮은 것처럼** 보였다. 세로가 넉넉한 화면에서는 줄일 일이 없어 드러나지 않았다.
131
+ *
132
+ * 안에 오는 것은 셋 다 문서다(template · custom-element · 생성된 절 카드들). 높이를 정해
133
+ * 주어야 하는 것은 board 뿐이고 board 는 이 칸을 거치지 않는다(activityContent 참조).
134
+ * 문서는 제 높이로 서고, 화면이 모자라면 **페이지 전체가 스크롤한다** — :host 의
135
+ * overflow: auto 가 이미 그 자리다.
136
+ */
137
+ section[hosted] {
138
+ flex: none;
139
+ padding: 0;
140
+ overflow: hidden;
141
+ }
104
142
 
105
- activity-thread-view { padding: var(--spacing-medium);
106
- }
143
+ /*
144
+ * 끝난 업무를 읽는 화면은 절이 여럿이라(기본 정보 · 업무 정보 · 수행 결과) 카드를 한 겹 더
145
+ * 두르지 않는다. 절들이 곧 카드다.
146
+ */
147
+ section[hosted][plain] {
148
+ margin: 0;
149
+ background: none;
150
+ border: none;
151
+ border-radius: 0;
152
+ }
107
153
 
108
- activity-thread-timeline { margin: var(--spacing-medium);
109
- }
154
+ ox-board-viewer {
155
+ width: 100%;
156
+ height: 100%;
157
+ }
110
158
 
111
- #custom-content { flex: 1;
112
- }
159
+ /*
160
+ * 여백을 주지 않는다 — **안에 든 절들이 이미 자기 여백을 갖는다.**
161
+ *
162
+ * 여기에 padding 을 두면 두 겹이 된다. 실측으로 확인했다: 안쪽 절의 왼쪽이 233px,
163
+ * 타임라인이 221px 이었다(--spacing-large 는 이 앱에서 12px 이다). 한 화면에서 카드마다
164
+ * 왼쪽 기준선이 달랐다.
165
+ */
166
+ activity-thread-view {
167
+ display: block;
168
+ }
113
169
 
114
- [empty] { flex: 1;
115
- display: flex;
116
- align-items: center;
117
- justify-content: center;
118
- align-self: center;
119
- color: var(--md-sys-color-on-surface-variant);
120
- font: var(--md-sys-typescale-title-medium);
121
- opacity: 0.7;
122
- }
170
+ activity-thread-timeline {
171
+ margin: var(--spacing-large, 16px);
172
+ }
173
+
174
+ #custom-content {
175
+ flex: 1;
176
+ }
123
177
 
124
- @media print { :host { display: block;
178
+ @media print {
179
+ :host {
180
+ display: block;
125
181
  overflow: visible;
126
- }
127
- }
182
+ }
183
+ }
128
184
  `
129
185
  ]; }
130
186
  get context() {
131
187
  return { title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),
132
188
  help: 'worklist/activity-thread-view-page',
189
+ /*
190
+ * 이 화면은 메뉴에 없다 — 「완료」에서 줄을 눌러 들어온다. 그래서 왼쪽 메뉴가 가리킬
191
+ * 항목이 없고, 표시가 사라져 들어온 사람이 자기가 어디에 있는지 잃는다.
192
+ *
193
+ * 어느 목록에서 열리는지는 이 화면이 안다. 그것을 적어 둔다.
194
+ */
195
+ menu: 'done-list',
133
196
  actions: [
134
197
  { title: i18next.t('button.close'),
135
198
  action: () => {
@@ -144,24 +207,33 @@ let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18ne
144
207
  render() {
145
208
  const activityThread = this.activityThread;
146
209
  if (!activityThread) {
147
- return html `<div empty>${i18next.t('text.no activity thread info')}</div> `;
210
+ return this.loaded
211
+ ? html `<div empty>
212
+ <span class="title">${i18next.t('text.no activity thread info')}</span>
213
+ <span class="why">${i18next.t('text.no-activity-thread-why')}</span>
214
+ </div>`
215
+ : nothing;
148
216
  }
149
217
  return html `
150
218
  <activity-thread-ribon .activityThread=${activityThread}></activity-thread-ribon>
151
219
  ${this.activityContent()}
152
- <activity-thread-timeline .activityThread=${activityThread} short-form></activity-thread-timeline>
220
+ <!--
221
+ 여기서는 편다 — 끝난 업무를 보러 온 화면이라 「어떻게 여기까지 왔나」가 곧 본문이다.
222
+ -->
223
+ <activity-thread-timeline .activityThread=${activityThread} open short-form></activity-thread-timeline>
153
224
  `;
154
225
  }
155
226
  activityContent() {
156
227
  switch (this.activityThread?.activityInstance?.viewType) {
157
228
  case 'template':
158
- return this.templateContent();
229
+ return this.hostedContent(this.templateContent());
159
230
  case 'generated':
160
231
  return this.generatedContent();
232
+ /* board 는 전체 화면을 쓰는 캔버스라 카드에 담지 않는다. */
161
233
  case 'board':
162
234
  return this.boardContent();
163
235
  case 'custom-element':
164
- return this.customElementContent();
236
+ return this.hostedContent(this.customElementContent());
165
237
  case 'page':
166
238
  case 'external':
167
239
  return html ``;
@@ -169,6 +241,14 @@ let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18ne
169
241
  return this.generatedContent();
170
242
  }
171
243
  }
244
+ /**
245
+ * 화면 종류가 달라도 같은 자리에 같은 모양으로 놓인다(activity-approval-page 의 같은 이름 참조).
246
+ *
247
+ * plain 은 안에 들어오는 것이 이미 절 카드 여럿을 갖고 있을 때다 — 카드를 두 겹 두르지 않는다.
248
+ */
249
+ hostedContent(content, plain = false) {
250
+ return html `<section hosted ?plain=${plain}>${content}</section>`;
251
+ }
172
252
  templateContent() {
173
253
  if (!this.activityThread) {
174
254
  return html ``;
@@ -176,35 +256,15 @@ let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18ne
176
256
  const { viewSource: template } = this.activityThread?.activityInstance;
177
257
  return unsafeHTML(template);
178
258
  }
179
- getInputSpec() {
180
- const model = this.activityThread?.activityInstance?.activity?.model;
181
- return (model || [])
182
- .filter(item => item.inout === 'in' || item.inout === 'inout')
183
- .map(item => {
184
- return { ...item,
185
- name: item.tag,
186
- label: item.tKey || item.name,
187
- property: item.options
188
- };
189
- });
190
- }
191
- getOutputSpec() {
192
- const model = this.activityThread?.activityInstance?.activity?.model;
193
- return (model || [])
194
- .filter(item => item.inout === 'inout' || item.inout === 'out')
195
- .map(item => {
196
- return { ...item,
197
- name: item.tag,
198
- label: item.tKey || item.name,
199
- property: item.options
200
- };
201
- });
202
- }
203
259
  generatedContent() {
204
260
  if (!this.activityThread) {
205
261
  return html ``;
206
262
  }
207
- return keyed(this.activityThread.id, html ` <activity-thread-view .activityThreadId=${this.activityThread.id}></activity-thread-view> `);
263
+ /*
264
+ * id 가 아니라 **값을 넘긴다.** 전에는 id 만 주고 그쪽이 스스로 다시 조회했다 — 이 화면이 이미
265
+ * 같은 건을 조회한 뒤라서 한 번 열면 같은 질의가 두 번 나갔다.
266
+ */
267
+ return keyed(this.activityThread.id, this.hostedContent(html `<activity-thread-view .activityThread=${this.activityThread}></activity-thread-view>`, true));
208
268
  }
209
269
  boardContent() {
210
270
  if (!this.activityThread) {
@@ -247,14 +307,6 @@ let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18ne
247
307
  });
248
308
  return element;
249
309
  }
250
- getOutputFromBoard() {
251
- const outputSpec = this.getOutputSpec();
252
- const data = this.oxBoardViewer.getSceneValues();
253
- return outputSpec.reduce((output, spec) => {
254
- output[spec.name] = data[spec.name];
255
- return output;
256
- }, {});
257
- }
258
310
  updated(changes) {
259
311
  if (changes.has('activityThread')) {
260
312
  this.updateContext();
@@ -274,6 +326,7 @@ let ActivityThreadViewPage = class ActivityThreadViewPage extends localize(i18ne
274
326
  }
275
327
  });
276
328
  this.activityThread = response.data.activityThread;
329
+ this.loaded = true;
277
330
  this.updateContext();
278
331
  }
279
332
  };
@@ -284,11 +337,11 @@ __decorate([
284
337
  __decorate([
285
338
  state(),
286
339
  __metadata("design:type", Object)
287
- ], ActivityThreadViewPage.prototype, "board", void 0);
340
+ ], ActivityThreadViewPage.prototype, "loaded", void 0);
288
341
  __decorate([
289
- query('ox-board-viewer'),
342
+ state(),
290
343
  __metadata("design:type", Object)
291
- ], ActivityThreadViewPage.prototype, "oxBoardViewer", void 0);
344
+ ], ActivityThreadViewPage.prototype, "board", void 0);
292
345
  ActivityThreadViewPage = __decorate([
293
346
  customElement('activity-thread-view-page')
294
347
  ], ActivityThreadViewPage);
@@ -1 +1 @@
1
- {"version":3,"file":"activity-thread-view-page.js","sourceRoot":"","sources":["../../../client/pages/activity-thread/activity-thread-view-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/board/ox-board-viewer.js'\nimport '../../components/activity-thread-ribon.js'\nimport '../../components/activity-thread-timeline.js'\nimport './activity-thread-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { DirectiveResult } from 'lit-html/directive.js'\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { ScrollbarStyles, CommonButtonStyles } from '@operato/styles'\nimport { provider } from '@things-factory/board-ui/dist-client/board-provider.js'\n\nconst ActivityThreadFetchResult = `\\\n{ id\n state\n dueAt\n assignedAt\n assignee { id\n name\n }\n output\n round\n activityApprovals { round\n order\n approver { name\n }\n judgment\n comment\n createdAt\n updatedAt\n terminatedAt\n }\n activityThreadHistories { transaction\n reason\n updater { name\n }\n updatedAt\n state\n output\n }\n activityInstance { id\n name\n description\n state\n activity { id\n model { name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n approvalLine { type\n value\n approver { id\n name\n description\n controlNo\n }\n }\n thumbnail\n input\n output\n viewType\n viewSource\n dueAt\n terminatedAt\n terminator { name\n email\n }\n createdAt\n }\n}`\n\nexport const ActivityThreadStatus = { Unassigned: 'unassigned',\n Assigned: 'assigned',\n Started: 'started',\n Delegated: 'delegated',\n Rejected: 'rejected',\n Ended: 'ended',\n Aborted: 'aborted'\n}\n\n@customElement('activity-thread-view-page')\nexport class ActivityThreadViewPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n css`\n :host { display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: auto;\n }\n\n ox-board-viewer { width: 100%;\n height: 100%;\n }\n\n activity-thread-view { padding: var(--spacing-medium);\n }\n\n activity-thread-timeline { margin: var(--spacing-medium);\n }\n\n #custom-content { flex: 1;\n }\n\n [empty] { flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: center;\n color: var(--md-sys-color-on-surface-variant);\n font: var(--md-sys-typescale-title-medium);\n opacity: 0.7;\n }\n\n @media print { :host { display: block;\n overflow: visible;\n }\n }\n `\n ]\n\n @state() activityThread: any\n @state() board: any\n\n get context() { return { title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),\n help: 'worklist/activity-thread-view-page',\n actions: [\n { title: i18next.t('button.close'),\n action: () => { history.back()\n },\n ...CommonButtonStyles.back\n }\n ]\n // activityThread: this.activityThread\n }\n }\n\n render() { const activityThread = this.activityThread\n\n if (!activityThread) { return html`<div empty>${i18next.t('text.no activity thread info')}</div> `\n }\n\n return html`\n <activity-thread-ribon .activityThread=${activityThread}></activity-thread-ribon>\n ${this.activityContent()}\n <activity-thread-timeline .activityThread=${activityThread} short-form></activity-thread-timeline>\n `\n }\n\n activityContent() { switch (this.activityThread?.activityInstance?.viewType) { case 'template':\n return this.templateContent()\n case 'generated':\n return this.generatedContent()\n case 'board':\n return this.boardContent()\n case 'custom-element':\n return this.customElementContent()\n case 'page':\n case 'external':\n return html``\n default:\n return this.generatedContent()\n }\n }\n\n templateContent() { if (!this.activityThread) { return html``\n }\n\n const { viewSource: template } = this.activityThread?.activityInstance\n return unsafeHTML(template)\n }\n\n getInputSpec() { const model = this.activityThread?.activityInstance?.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'in' || item.inout === 'inout')\n .map(item => { return { ...item,\n name: item.tag,\n label: item.tKey || item.name,\n property: item.options\n }\n })\n }\n\n getOutputSpec() { const model = this.activityThread?.activityInstance?.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'inout' || item.inout === 'out')\n .map(item => { return { ...item,\n name: item.tag,\n label: item.tKey || item.name,\n property: item.options\n }\n })\n }\n\n generatedContent(): DirectiveResult { if (!this.activityThread) { return html``\n }\n\n return keyed(\n this.activityThread.id,\n html` <activity-thread-view .activityThreadId=${this.activityThread.id}></activity-thread-view> `\n )\n }\n\n boardContent(): DirectiveResult { if (!this.activityThread) { return html``\n }\n\n const { output, activityInstance } = this.activityThread\n const { viewSource: boardId, input } = activityInstance || {}\n\n if (!this.board || this.board.id !== boardId) { this.board = { id: boardId\n }\n }\n\n /* \n ox-board-viewer에서 provider에 의해 공급되는 board가 각 id별로 instance를 하나씩 밖에 가지지 않으므로,\n 동일한 id의 보드를 다른 page에 뺏기는 경우가 있다.\n 따라서, Page가 active될 때마다 타임스탬프를 refresh key로 설정하였다.\n */\n return keyed(\n this.activityThread.id,\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${this.board}\n .provider=${provider}\n .values=${{ ...input, ...output }}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `\n )\n }\n\n customElementContent() { if (!this.activityThread) { return html``\n }\n\n const { output, activityInstance } = this.activityThread\n const { viewSource: tagName, input } = activityInstance || {}\n\n const element = document.createElement(tagName)\n element.id = 'custom-content'\n element.input = input\n element.output = output\n element.addEventListener('change', (e: CustomEvent) => { this.activityThread.output = e.detail\n })\n\n return element\n }\n\n @query('ox-board-viewer') oxBoardViewer: any\n\n getOutputFromBoard() { const outputSpec = this.getOutputSpec()\n const data = this.oxBoardViewer.getSceneValues()\n\n return outputSpec.reduce((output, spec) => { output[spec.name] = data[spec.name]\n return output\n }, {})\n }\n\n updated(changes) { if (changes.has('activityThread')) { this.updateContext()\n }\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) { if (this.active) { this.fetchActivityThread(lifecycle.resourceId)\n }\n }\n\n async fetchActivityThread(id) { const response = await client.query({ query: gql`\n query activityThread($id: String!) { activityThread(id: $id) ${ActivityThreadFetchResult}\n }\n `,\n variables: { id\n }\n })\n\n this.activityThread = response.data.activityThread\n\n this.updateContext()\n }\n}\n"]}
1
+ {"version":3,"file":"activity-thread-view-page.js","sourceRoot":"","sources":["../../../client/pages/activity-thread/activity-thread-view-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/board/ox-board-viewer.js'\nimport '../../components/activity-thread-ribon.js'\nimport '../../components/activity-thread-timeline.js'\nimport './activity-thread-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, nothing } from 'lit'\nimport { DirectiveResult } from 'lit-html/directive.js'\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { ScrollbarStyles, CommonButtonStyles } from '@operato/styles'\nimport { provider } from '@things-factory/board-ui/dist-client/board-provider.js'\n\nimport { ActivityFieldsStyles } from '../../components/activity-fields.js'\n\nconst ActivityThreadFetchResult = `\\\n{ id\n state\n dueAt\n assignedAt\n startedAt\n terminatedAt\n assignee { id\n name\n }\n output\n round\n activityApprovals { round\n order\n approver { name\n }\n judgment\n comment\n createdAt\n updatedAt\n terminatedAt\n }\n activityThreadHistories { transaction\n reason\n updater { name\n }\n updatedAt\n state\n output\n }\n activityInstance { id\n name\n description\n state\n activity { id\n model { name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n hidden\n }\n }\n approvalLine { type\n value\n approver { id\n name\n description\n controlNo\n }\n }\n thumbnail\n input\n output\n viewType\n viewSource\n dueAt\n terminatedAt\n terminator { name\n email\n }\n createdAt\n }\n}`\n\nexport const ActivityThreadStatus = { Unassigned: 'unassigned',\n Assigned: 'assigned',\n Started: 'started',\n Delegated: 'delegated',\n Rejected: 'rejected',\n Ended: 'ended',\n Aborted: 'aborted'\n}\n\n@customElement('activity-thread-view-page')\nexport class ActivityThreadViewPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n ActivityFieldsStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: auto;\n background: var(--ui-bg, #f0f2f4);\n color: var(--ui-ink, #17242c);\n font-size: var(--ui-t-body, 13px);\n }\n\n /* 카드가 담아 주므로 안에 들어오는 화면은 자기 면과 여백을 갖지 않는다. */\n /*\n * ── 줄어들지 않는다 — 줄어들면 본문이 잘린다 (2026-09-07) ──────────────\n * 이 칸은 flex 항목인데 크기를 안 정해 두어 기본값 flex: 0 1 auto 로 있었다. **1 이\n * 줄어든다는 뜻이다** — 세로가 모자라면 브라우저가 이 칸부터 줄인다. 그런데 여기엔\n * overflow: hidden 이 걸려 있어서(카드 모서리를 따라 자르려고) 줄어든 만큼이 **스크롤도\n * 없이 사라진다.**\n *\n * 실측(1400x620): 이 칸이 242px 로 줄었는데 안의 내용은 362px 이었다. 「업무 내용」 절이\n * 276~464 에 있어 대부분이 잘렸고, 잘린 자리 바로 아래에서 타임라인이 시작하니 **타임라인이\n * 본문을 덮은 것처럼** 보였다. 세로가 넉넉한 화면에서는 줄일 일이 없어 드러나지 않았다.\n *\n * 안에 오는 것은 셋 다 문서다(template · custom-element · 생성된 절 카드들). 높이를 정해\n * 주어야 하는 것은 board 뿐이고 board 는 이 칸을 거치지 않는다(activityContent 참조).\n * 문서는 제 높이로 서고, 화면이 모자라면 **페이지 전체가 스크롤한다** — :host 의\n * overflow: auto 가 이미 그 자리다.\n */\n section[hosted] {\n flex: none;\n padding: 0;\n overflow: hidden;\n }\n\n /*\n * 끝난 업무를 읽는 화면은 절이 여럿이라(기본 정보 · 업무 정보 · 수행 결과) 카드를 한 겹 더\n * 두르지 않는다. 절들이 곧 카드다.\n */\n section[hosted][plain] {\n margin: 0;\n background: none;\n border: none;\n border-radius: 0;\n }\n\n ox-board-viewer {\n width: 100%;\n height: 100%;\n }\n\n /*\n * 여백을 주지 않는다 — **안에 든 절들이 이미 자기 여백을 갖는다.**\n *\n * 여기에 padding 을 두면 두 겹이 된다. 실측으로 확인했다: 안쪽 절의 왼쪽이 233px,\n * 타임라인이 221px 이었다(--spacing-large 는 이 앱에서 12px 이다). 한 화면에서 카드마다\n * 왼쪽 기준선이 달랐다.\n */\n activity-thread-view {\n display: block;\n }\n\n activity-thread-timeline {\n margin: var(--spacing-large, 16px);\n }\n\n #custom-content {\n flex: 1;\n }\n\n @media print {\n :host {\n display: block;\n overflow: visible;\n }\n }\n `\n ]\n\n @state() activityThread: any\n\n /**\n * 조회를 마쳤나 — **「아직 안 읽었다」와 「없다」는 다르다.**\n *\n * 목록에서 줄을 눌러 들어온 사람이 방금 본 건이 없다는 말을 먼저 읽지 않게, 조회가 끝난 뒤에만\n * 그 말을 한다.\n */\n @state() loaded = false\n @state() board: any\n\n get context() { return { title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),\n help: 'worklist/activity-thread-view-page',\n /*\n * 이 화면은 메뉴에 없다 — 「완료」에서 줄을 눌러 들어온다. 그래서 왼쪽 메뉴가 가리킬\n * 항목이 없고, 표시가 사라져 들어온 사람이 자기가 어디에 있는지 잃는다.\n *\n * 어느 목록에서 열리는지는 이 화면이 안다. 그것을 적어 둔다.\n */\n menu: 'done-list',\n actions: [\n { title: i18next.t('button.close'),\n action: () => { history.back()\n },\n ...CommonButtonStyles.back\n }\n ]\n // activityThread: this.activityThread\n }\n }\n\n render() { const activityThread = this.activityThread\n\n if (!activityThread) {\n return this.loaded\n ? html`<div empty>\n <span class=\"title\">${i18next.t('text.no activity thread info')}</span>\n <span class=\"why\">${i18next.t('text.no-activity-thread-why')}</span>\n </div>`\n : nothing\n }\n\n return html`\n <activity-thread-ribon .activityThread=${activityThread}></activity-thread-ribon>\n ${this.activityContent()}\n <!--\n 여기서는 편다 — 끝난 업무를 보러 온 화면이라 「어떻게 여기까지 왔나」가 곧 본문이다.\n -->\n <activity-thread-timeline .activityThread=${activityThread} open short-form></activity-thread-timeline>\n `\n }\n\n activityContent() { switch (this.activityThread?.activityInstance?.viewType) { case 'template':\n return this.hostedContent(this.templateContent())\n case 'generated':\n return this.generatedContent()\n /* board 는 전체 화면을 쓰는 캔버스라 카드에 담지 않는다. */\n case 'board':\n return this.boardContent()\n case 'custom-element':\n return this.hostedContent(this.customElementContent())\n case 'page':\n case 'external':\n return html``\n default:\n return this.generatedContent()\n }\n }\n\n /**\n * 화면 종류가 달라도 같은 자리에 같은 모양으로 놓인다(activity-approval-page 의 같은 이름 참조).\n *\n * plain 은 안에 들어오는 것이 이미 절 카드 여럿을 갖고 있을 때다 — 카드를 두 겹 두르지 않는다.\n */\n hostedContent(content: unknown, plain = false) {\n return html`<section hosted ?plain=${plain}>${content}</section>`\n }\n\n templateContent() { if (!this.activityThread) { return html``\n }\n\n const { viewSource: template } = this.activityThread?.activityInstance\n return unsafeHTML(template)\n }\n\n generatedContent(): DirectiveResult { if (!this.activityThread) { return html``\n }\n\n /*\n * id 가 아니라 **값을 넘긴다.** 전에는 id 만 주고 그쪽이 스스로 다시 조회했다 — 이 화면이 이미\n * 같은 건을 조회한 뒤라서 한 번 열면 같은 질의가 두 번 나갔다.\n */\n return keyed(\n this.activityThread.id,\n this.hostedContent(\n html`<activity-thread-view .activityThread=${this.activityThread}></activity-thread-view>`,\n true\n )\n )\n }\n\n boardContent(): DirectiveResult { if (!this.activityThread) { return html``\n }\n\n const { output, activityInstance } = this.activityThread\n const { viewSource: boardId, input } = activityInstance || {}\n\n if (!this.board || this.board.id !== boardId) { this.board = { id: boardId\n }\n }\n\n /* \n ox-board-viewer에서 provider에 의해 공급되는 board가 각 id별로 instance를 하나씩 밖에 가지지 않으므로,\n 동일한 id의 보드를 다른 page에 뺏기는 경우가 있다.\n 따라서, Page가 active될 때마다 타임스탬프를 refresh key로 설정하였다.\n */\n return keyed(\n this.activityThread.id,\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${this.board}\n .provider=${provider}\n .values=${{ ...input, ...output }}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `\n )\n }\n\n customElementContent() { if (!this.activityThread) { return html``\n }\n\n const { output, activityInstance } = this.activityThread\n const { viewSource: tagName, input } = activityInstance || {}\n\n const element = document.createElement(tagName)\n element.id = 'custom-content'\n element.input = input\n element.output = output\n element.addEventListener('change', (e: CustomEvent) => { this.activityThread.output = e.detail\n })\n\n return element\n }\n\n updated(changes) { if (changes.has('activityThread')) { this.updateContext()\n }\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) { if (this.active) { this.fetchActivityThread(lifecycle.resourceId)\n }\n }\n\n async fetchActivityThread(id) { const response = await client.query({ query: gql`\n query activityThread($id: String!) { activityThread(id: $id) ${ActivityThreadFetchResult}\n }\n `,\n variables: { id\n }\n })\n\n this.activityThread = response.data.activityThread\n this.loaded = true\n\n this.updateContext()\n }\n}\n"]}
@@ -1,14 +1,31 @@
1
- import '@things-factory/organization/dist-client/component/approval-line-view.js';
2
- import { LitElement } from 'lit';
1
+ import { LitElement, nothing } from 'lit';
3
2
  import { ActivityThread } from '../../types/activity-thread.js';
4
3
  declare const ActivityThreadView_base: (new (...args: any[]) => LitElement) & typeof LitElement;
4
+ /**
5
+ * 끝난 업무를 읽는 화면 — **완료 목록에서 줄을 눌러 들어온다.**
6
+ *
7
+ * ── 무엇이 잘못되고 있었나 (2026-09-06) ────────────────────────────────────
8
+ * 이 화면은 같은 건을 그리는 세 화면 중 하나인데(업무 상세 · 결재 상세 · 여기), 셋이 서로 다른
9
+ * 말과 모양을 쓰고 있었다. 같은 값을 보는 사람이 화면을 옮길 때마다 다른 것을 본다.
10
+ *
11
+ * 항목 이름 결재 화면은 「승인이 필요한 이유」, 여기는 원문 because
12
+ * 객체 값 결재 화면은 JSON, 여기는 [object Object]
13
+ * 시각 결재 화면은 2026. 9. 1. 오전 11:55, 여기는 Tuesday, September 1, 2026 at 11:55 AM
14
+ * 갈래 결재 화면은 받은 값 · 낼 값으로 갈라 보이고, 여기는 전부 「산출물」 한 표
15
+ *
16
+ * 마지막이 특히 나쁘다. because 는 업무를 시작할 때 받은 값인데 「산출물」 밑에 있었다 —
17
+ * **화면이 값의 성격을 틀리게 말한다.**
18
+ *
19
+ * 그래서 셋이 activity-fields 한 벌을 쓰게 했다.
20
+ *
21
+ * ── 자기 조회를 하지 않는다 ────────────────────────────────────────────────
22
+ * 전에는 이 요소가 activityThreadId 를 받아 **스스로 다시 조회했다.** 담고 있는 화면
23
+ * (activity-thread-view-page)이 이미 같은 건을 조회한 뒤였다. 한 화면을 열면 같은 질의가 두 번
24
+ * 나갔고, 두 응답이 어긋날 수 있는 자리도 생긴다. 값을 받아 그리기만 한다.
25
+ */
5
26
  export declare class ActivityThreadView extends ActivityThreadView_base {
6
27
  static styles: import("lit").CSSResult[];
7
- activityThreadId?: string;
8
28
  activityThread?: ActivityThread;
9
- render(): import("lit-html").TemplateResult<1>;
10
- renderInOut(data: any): import("lit-html").TemplateResult<1>;
11
- updated(changes: any): void;
12
- fetchActivityThread(): Promise<void>;
29
+ render(): import("lit-html").TemplateResult<1> | typeof nothing;
13
30
  }
14
31
  export {};