@peers-app/peers-ui 0.13.6 → 0.14.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 (84) hide show
  1. package/dist/components/left-bar.js +0 -9
  2. package/dist/components/router.js +0 -44
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/mention-configs.d.ts +0 -2
  6. package/dist/mention-configs.js +1 -38
  7. package/dist/screens/search/global-search.js +2 -4
  8. package/dist/screens/workflows/workflow-details.js +5 -56
  9. package/dist/system-apps/index.d.ts +0 -4
  10. package/dist/system-apps/index.js +1 -18
  11. package/dist/ui-defaults/index.d.ts +0 -1
  12. package/dist/ui-defaults/index.js +0 -1
  13. package/dist/ui-defaults/list-screen.js +0 -1
  14. package/docs/tabs-ui.md +6 -21
  15. package/package.json +3 -3
  16. package/src/components/left-bar.tsx +0 -12
  17. package/src/components/router.tsx +0 -48
  18. package/src/index.tsx +2 -2
  19. package/src/mention-configs.ts +1 -40
  20. package/src/screens/search/global-search.tsx +2 -6
  21. package/src/screens/workflows/workflow-details.tsx +3 -28
  22. package/src/system-apps/index.ts +0 -14
  23. package/src/ui-defaults/index.ts +0 -1
  24. package/src/ui-defaults/list-screen.tsx +0 -1
  25. package/dist/screens/events/cron.d.ts +0 -3
  26. package/dist/screens/events/cron.js +0 -77
  27. package/dist/screens/events/event-details.d.ts +0 -6
  28. package/dist/screens/events/event-details.js +0 -112
  29. package/dist/screens/events/event-handlers.d.ts +0 -7
  30. package/dist/screens/events/event-handlers.js +0 -84
  31. package/dist/screens/events/event-info.d.ts +0 -5
  32. package/dist/screens/events/event-info.js +0 -19
  33. package/dist/screens/events/event-list.d.ts +0 -2
  34. package/dist/screens/events/event-list.js +0 -107
  35. package/dist/screens/events/event-schedule.d.ts +0 -5
  36. package/dist/screens/events/event-schedule.js +0 -124
  37. package/dist/screens/knowledge/knowledge-frame-details.bk.d.ts +0 -6
  38. package/dist/screens/knowledge/knowledge-frame-details.bk.js +0 -84
  39. package/dist/screens/knowledge/knowledge-frame-details.d.ts +0 -8
  40. package/dist/screens/knowledge/knowledge-frame-details.js +0 -143
  41. package/dist/screens/knowledge/knowledge-frame-list.d.ts +0 -2
  42. package/dist/screens/knowledge/knowledge-frame-list.js +0 -45
  43. package/dist/screens/knowledge/knowledge-value-details.d.ts +0 -6
  44. package/dist/screens/knowledge/knowledge-value-details.js +0 -150
  45. package/dist/screens/knowledge/knowledge-value-list-item.d.ts +0 -5
  46. package/dist/screens/knowledge/knowledge-value-list-item.js +0 -39
  47. package/dist/screens/knowledge/knowledge-value-list.d.ts +0 -3
  48. package/dist/screens/knowledge/knowledge-value-list.js +0 -123
  49. package/dist/screens/predicates/predicate-details.d.ts +0 -6
  50. package/dist/screens/predicates/predicate-details.js +0 -103
  51. package/dist/screens/predicates/predicate-list.d.ts +0 -2
  52. package/dist/screens/predicates/predicate-list.js +0 -46
  53. package/dist/screens/workflows/workflow-subscriptions.d.ts +0 -6
  54. package/dist/screens/workflows/workflow-subscriptions.js +0 -81
  55. package/dist/system-apps/events.app.d.ts +0 -2
  56. package/dist/system-apps/events.app.js +0 -8
  57. package/dist/system-apps/knowledge-frames.app.d.ts +0 -2
  58. package/dist/system-apps/knowledge-frames.app.js +0 -9
  59. package/dist/system-apps/knowledge-values.app.d.ts +0 -2
  60. package/dist/system-apps/knowledge-values.app.js +0 -9
  61. package/dist/system-apps/predicates.app.d.ts +0 -2
  62. package/dist/system-apps/predicates.app.js +0 -8
  63. package/dist/ui-defaults/notes-editor.d.ts +0 -7
  64. package/dist/ui-defaults/notes-editor.js +0 -41
  65. package/src/screens/events/cron.ts +0 -74
  66. package/src/screens/events/event-details.tsx +0 -117
  67. package/src/screens/events/event-handlers.tsx +0 -61
  68. package/src/screens/events/event-info.tsx +0 -29
  69. package/src/screens/events/event-list.tsx +0 -104
  70. package/src/screens/events/event-schedule.tsx +0 -130
  71. package/src/screens/knowledge/knowledge-frame-details.bk.tsx +0 -160
  72. package/src/screens/knowledge/knowledge-frame-details.tsx +0 -176
  73. package/src/screens/knowledge/knowledge-frame-list.tsx +0 -49
  74. package/src/screens/knowledge/knowledge-value-details.tsx +0 -181
  75. package/src/screens/knowledge/knowledge-value-list-item.tsx +0 -48
  76. package/src/screens/knowledge/knowledge-value-list.tsx +0 -131
  77. package/src/screens/predicates/predicate-details.tsx +0 -125
  78. package/src/screens/predicates/predicate-list.tsx +0 -50
  79. package/src/screens/workflows/workflow-subscriptions.tsx +0 -58
  80. package/src/system-apps/events.app.ts +0 -7
  81. package/src/system-apps/knowledge-frames.app.ts +0 -8
  82. package/src/system-apps/knowledge-values.app.ts +0 -8
  83. package/src/system-apps/predicates.app.ts +0 -7
  84. package/src/ui-defaults/notes-editor.tsx +0 -51
@@ -1,160 +0,0 @@
1
- import { observable } from "@peers-app/peers-sdk";
2
- import React from "react";
3
- import { IKnowledgeFrame, KnowledgeFrames, KnowledgeValues, IDoc } from "@peers-app/peers-sdk";
4
- import { SaveButton } from "../../components/save-button";
5
- import { TextListEditor } from "../../components/text-list-editor.tsx/text-list-editor";
6
- import { LoadingIndicator } from "../../components/loading-indicator";
7
- import { useObservable, useObservableState, usePromise, useSubscription } from "../../hooks";
8
- import { Input } from "../../components/input";
9
-
10
- interface IProps {
11
- knowledgeFrameId: string;
12
- }
13
-
14
- export const KnowledgeFrameDetails = (props: IProps) => {
15
-
16
- const frame = usePromise(async () => {
17
- const frame = await KnowledgeFrames().get(props.knowledgeFrameId);
18
- if (!frame) {
19
- throw new Error('Knowledge Frame not found');
20
- }
21
- return KnowledgeFrames().initDoc(frame);
22
- }, undefined, [props.knowledgeFrameId]);
23
-
24
- const bodyObs = frame?.qs.body || observable('');
25
- // useEffect
26
- let p = setTimeout(() => {}, 0);
27
- useSubscription(bodyObs, () => {
28
- clearTimeout(p);
29
- p = setTimeout(() => {
30
- // todo update frames knowledgeIds that are linked in the body
31
- frame?.save();
32
- }, 2000);
33
- });
34
-
35
- if (!frame) {
36
- return <LoadingIndicator />;
37
- }
38
-
39
- return (
40
- <div className="container-fluid p-3">
41
-
42
- <div className="d-flex">
43
- <div>
44
- <h4>
45
- <i className="me-2 bi bi-window-dock"></i>
46
- </h4>
47
- </div>
48
- <div className="flex-grow-1">
49
- <h4>
50
- <Input
51
- key={frame.knowledgeFrameId}
52
- className='border border-0'
53
- style={{ width: '100%', outline: 'none', backgroundColor: 'transparent' }}
54
- value={frame.qs.name}
55
- />
56
- </h4>
57
- </div>
58
- <div>
59
- <SaveButton
60
- key={frame.knowledgeFrameId}
61
- doc={frame}
62
- />
63
- </div>
64
- </div>
65
-
66
- <br />
67
-
68
- {/* <MarkdownEditorInline
69
- value={frame.qs.body}
70
- maxHeight={'calc(100vh - 130px)'}
71
- /> */}
72
-
73
- {/* <KnowledgeEntriesList frame={frame} /> */}
74
-
75
- <TextListEditor value={bodyObs} maxHeight={'calc(100vh - 130px)'} />
76
-
77
- {/* <KnowledgeEntryEditor /> */}
78
-
79
- </div>
80
- )
81
- }
82
-
83
- interface IKnowledgeEntriesListProps {
84
- frame: IDoc<IKnowledgeFrame>;
85
- }
86
-
87
- const KnowledgeEntriesList = (props: IKnowledgeEntriesListProps) => {
88
- const { frame } = props;
89
-
90
- useObservable(frame.qs.knowledgeValueIds);
91
-
92
- const knowledgeEntries = usePromise(async () => {
93
- return KnowledgeValues().list({ knowledgeValueId: frame.knowledgeValueIds } );
94
- }, [], [frame.knowledgeValueIds]);
95
-
96
- return (
97
- <div>
98
- <NewKnowledgeEntry frame={frame} />
99
-
100
- <div>
101
- {knowledgeEntries?.map(entry => {
102
- return (
103
- <div key={entry.knowledgeValueId}>
104
- {JSON.stringify(entry, null, 2)}
105
- </div>
106
- );
107
- })}
108
- </div>
109
-
110
- </div>
111
- );
112
- };
113
-
114
- interface INewKnowledgeEntryProps {
115
- defaultSubjectId?: string;
116
- defaultPredicateId?: string;
117
- frame: IDoc<IKnowledgeFrame>;
118
- }
119
-
120
- const NewKnowledgeEntry = (props: INewKnowledgeEntryProps) => {
121
- const { defaultSubjectId, defaultPredicateId, frame } = props;
122
-
123
- const valueStr = useObservableState('', true);
124
-
125
- const addKnowledgeEntry = async (e: React.FormEvent) => {
126
- e.preventDefault();
127
- const value = valueStr().trim();
128
- throw new Error('Not implemented');
129
- // const entry = await KnowledgeValues().insert({
130
- // knowledgeValueId: newid(),
131
- // peerTypeId: 'string',
132
- // value,
133
- // // predicateId: defaultPredicateId,
134
- // // subjectId: defaultSubjectId,
135
- // // modified: Date.now(),
136
-
137
- // });
138
-
139
- // frame.knowledgeValueIds = [...frame.knowledgeValueIds, entry.knowledgeValueId];
140
- // await frame.save();
141
- // valueStr('');
142
- };
143
-
144
- return (
145
- <div>
146
- <form
147
- onSubmit={addKnowledgeEntry}
148
- >
149
- <Input
150
- value={valueStr}
151
- className="form-control sm"
152
- type="text"
153
- placeholder="Add Entry"
154
- />
155
- </form>
156
-
157
- </div>
158
- );
159
- }
160
-
@@ -1,176 +0,0 @@
1
- import { DataFilter, formatMention, getAllMentions, IDoc, IKnowledgeFrame, IKnowledgeValue, KnowledgeFrames, KnowledgeValues, Observable, observable, PeersUI } from "@peers-app/peers-sdk";
2
- import { sortBy } from "lodash";
3
- import React, { useState } from "react";
4
- import { Input } from "../../components/input";
5
- import { LoadingIndicator } from "../../components/loading-indicator";
6
- import { SaveButton } from "../../components/save-button";
7
- import { Typeahead } from "../../components/typeahead/typeahead";
8
- import { useObservable, useObservableState, usePromise, useSubscription } from "../../hooks";
9
- import { mentionConfigs } from "../../mention-configs";
10
- import { updateActiveTabTitle } from "../../tabs-layout/tabs-state";
11
-
12
- interface IProps {
13
- knowledgeFrameId: string;
14
- }
15
-
16
- export const KnowledgeFrameDetails = (props: IProps) => {
17
-
18
- const frame = usePromise(async () => {
19
- const frame = await KnowledgeFrames().get(props.knowledgeFrameId);
20
- if (!frame) {
21
- throw new Error('Knowledge Frame not found');
22
- }
23
- const doc = KnowledgeFrames().initDoc(frame);
24
- updateActiveTabTitle(doc.name || "Knowledge Frame");
25
- return doc;
26
- }, undefined, [props.knowledgeFrameId]);
27
-
28
- const typeaheadText = useObservableState('', true);
29
-
30
- if (!frame) {
31
- return <LoadingIndicator />;
32
- }
33
-
34
- function createKnowledgeValue() {
35
- console.log('submit', { textValue: typeaheadText() });
36
- }
37
-
38
- return (
39
- <div className="container-fluid p-3">
40
-
41
- <div className="d-flex">
42
- <div>
43
- <h4>
44
- <i className="me-2 bi bi-window-dock"></i>
45
- </h4>
46
- </div>
47
- <div className="flex-grow-1">
48
- <h4>
49
- <Input
50
- key={frame.knowledgeFrameId}
51
- className='border border-0'
52
- style={{ width: '100%', outline: 'none', backgroundColor: 'transparent' }}
53
- value={frame.qs.name}
54
- />
55
- </h4>
56
- </div>
57
- <div>
58
- <SaveButton
59
- key={frame.knowledgeFrameId}
60
- doc={frame}
61
- />
62
- </div>
63
- </div>
64
-
65
- <br />
66
-
67
- <Typeahead
68
- value={observable('')}
69
- textValue={typeaheadText}
70
- mentionConfigs={mentionConfigs}
71
- // placeholder={`Search for knowledge to add or create new`}
72
- autoFocus
73
- onSubmit={createKnowledgeValue}
74
- />
75
-
76
- <KnowledgeSearchValuesList searchText={typeaheadText} />
77
-
78
- <KnowledgeFrameValuesList frame={frame} />
79
-
80
- </div>
81
- )
82
- }
83
-
84
- let p: ReturnType<typeof setTimeout> | undefined = undefined;
85
- const KnowledgeSearchValuesList = (props: { searchText: Observable<string> }) => {
86
- const { searchText } = props;
87
-
88
- useObservable(searchText);
89
- const [searchResults, setSearchResults] = useState<IKnowledgeValue[] | undefined>(undefined);
90
-
91
- useSubscription(searchText, async (text) => {
92
- clearTimeout(p);
93
- setSearchResults(undefined);
94
- if (!searchText()) {
95
- return;
96
- }
97
- p = setTimeout(async () => {
98
- p = undefined;
99
- const values = await searchKnowledgeValues(searchText());
100
- if (p) return;
101
- setSearchResults(values);
102
- }, 1000);
103
- }, true);
104
-
105
- if (!searchText()) {
106
- return null;
107
- }
108
-
109
- if (searchResults === undefined) {
110
- return (
111
- <div className="d-flex justify-content-center m-3">
112
- <div className="spinner-grow" role="status"
113
- style={{ width: '1.2rem', height: '1.2rem', }}
114
- >
115
- <span className="visually-hidden">Loading...</span>
116
- </div>
117
- </div>
118
- )
119
- }
120
- if (searchResults.length === 0) {
121
- return (
122
- <div className="d-flex justify-content-center mt-3" style={{ minHeight: '35px' }}>
123
- <div>No results found</div>
124
- </div>
125
- )
126
- }
127
- return (
128
- <div style={{ minHeight: '51px' }}>
129
- {searchResults.map(item =>
130
- <PeersUI
131
- key={item.knowledgeValueId}
132
- uiEditMode="view"
133
- uiCategory="list-item"
134
- props={{ knowledgeValue: item }}
135
- />
136
- )}
137
- </div>
138
- )
139
- }
140
-
141
- const KnowledgeFrameValuesList = (props: { frame: IDoc<IKnowledgeFrame> }) => {
142
- const { frame } = props;
143
- return (
144
- <div>
145
- show values included in frame
146
- </div>
147
- )
148
- }
149
-
150
- export async function searchKnowledgeValues(searchText: string): Promise<IKnowledgeValue[]> {
151
- const mentions = getAllMentions(searchText)
152
- const typeMentions = mentions.filter(m => m.kind === "type");
153
- const otherMentions = mentions.filter(m => m.kind !== "type");
154
- const filter: DataFilter<IKnowledgeValue> = {};
155
- if (typeMentions.length) {
156
- filter.peerTypeId = typeMentions.map(m => m.id);
157
- for (const typeMention of typeMentions) {
158
- searchText = searchText.replace(formatMention(typeMention), '');
159
- }
160
- }
161
-
162
- if (otherMentions.length) {
163
- for (const mention of mentions) {
164
- searchText = searchText.replace(formatMention(mention), mention.id);
165
- }
166
- }
167
- searchText = searchText.trim();
168
-
169
- let matches = await KnowledgeValues().list(filter, { pageSize: 100, textSearch: searchText });
170
-
171
- if (searchText) {
172
- const words = searchText.toLowerCase().split(' ');
173
- matches = sortBy(matches, r => words.filter(w => r.name.toLowerCase().includes(w)).length).reverse();
174
- }
175
- return matches;
176
- }
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import { newid, IKnowledgeFrame, KnowledgeFrames } from "@peers-app/peers-sdk";
3
- import { ListScreen } from '../../components/list-screen';
4
- import { mainContentPath } from '../../globals';
5
-
6
-
7
- export const KnowledgeFrameList = () => {
8
- const screenPathPart = 'knowledge-frames';
9
- const icon = 'bi bi-window-dock';
10
-
11
- return ListScreen({
12
- table: KnowledgeFrames(),
13
- sortBy: ['-modified'],
14
- placeholderName: 'frame',
15
- getFilter: (text: string) => {
16
- return {
17
- $or: [
18
- { name: { $matchWords: text } },
19
- { body: { $matchWords: text } },
20
- ]
21
- };
22
- },
23
- newRecord: async (text: string) => {
24
- const knowledgeFrame = await KnowledgeFrames().insert({
25
- knowledgeFrameId: newid(),
26
- name: text,
27
- knowledgeValueIds: [],
28
- body: '',
29
- modified: Date.now(),
30
- });
31
- mainContentPath(`${screenPathPart}/${knowledgeFrame.knowledgeFrameId}`);
32
- return knowledgeFrame;
33
- },
34
- renderItem: (item: IKnowledgeFrame) => {
35
- return (
36
- <div
37
- key={item.knowledgeFrameId}
38
- className='container-fluid pb-4'
39
- >
40
- <i style={{ cursor: 'pointer' }} className={icon}></i>
41
- &nbsp;&nbsp;
42
- <a href={`#${screenPathPart}/${item.knowledgeFrameId}`}>
43
- {item.name?.trim() || 'No Name'}
44
- </a>
45
- </div>
46
- )
47
- },
48
- });
49
- };
@@ -1,181 +0,0 @@
1
- import { IDoc, IKnowledgeValue, KnowledgeValues, newid, PeersUI, PeerTypes } from "@peers-app/peers-sdk";
2
- import React, { useEffect, useState } from "react";
3
- import { Input } from "../../components/input";
4
- import { IOSchemaValues } from "../../components/io-schema-values";
5
- import { LoadingIndicator } from "../../components/loading-indicator";
6
- import { SaveButton } from "../../components/save-button";
7
- import { Tooltip } from "../../components/tooltip";
8
- import { Typeahead } from "../../components/typeahead/typeahead";
9
- import { useObservable, usePromise, useSubscription } from "../../hooks";
10
- import { valueTypeMentionConfig } from "../../mention-configs";
11
- import { updateActiveTabTitle } from "../../tabs-layout/tabs-state";
12
-
13
- interface IProps {
14
- knowledgeValueId: string;
15
- }
16
-
17
- export const KnowledgeValueDetails = (props: IProps) => {
18
-
19
- const knowledgeValue = usePromise(async () => {
20
- const knowledgeValue = await KnowledgeValues().get(props.knowledgeValueId);
21
- if (!knowledgeValue) {
22
- throw new Error('Knowledge Value not found');
23
- }
24
- updateActiveTabTitle(knowledgeValue.name || "Knowledge Value");
25
- return KnowledgeValues().initDoc(knowledgeValue);
26
- }, undefined, [props.knowledgeValueId]);
27
-
28
- // Force refresh when value type changes
29
- const [forceRefreshOnTypeChange, setForceRefreshOnTypeChange] = useState(newid());
30
- useEffect(() => {
31
- if (!knowledgeValue) return;
32
- const sub = knowledgeValue.qs.peerTypeId.subscribe(() => {
33
- setForceRefreshOnTypeChange(newid());
34
- });
35
- return () => {
36
- sub.dispose();
37
- }
38
- }, [knowledgeValue]);
39
-
40
- if (!(knowledgeValue)) {
41
- return <LoadingIndicator />;
42
- }
43
-
44
- async function saveChanges() {
45
- if (!knowledgeValue) return;
46
- const type = await PeerTypes().get(knowledgeValue.peerTypeId);
47
- const existingFields = type?.schema.fields.map(f => f.name) || [];
48
- const value = knowledgeValue.value || {};
49
- for (const key of Object.keys(value)) {
50
- if (!existingFields.includes(key)) {
51
- delete value[key];
52
- }
53
- }
54
- knowledgeValue.save();
55
- }
56
-
57
- return (
58
- <div className="container-fluid p-1">
59
- <Autosave doc={knowledgeValue} />
60
-
61
- <div className="d-flex">
62
- <div>
63
- <h4>
64
- <KnowledgeValueIcon knowledgeValue={knowledgeValue} />
65
- </h4>
66
- </div>
67
- <div className="flex-grow-1">
68
- <h4>
69
- <Input
70
- className='border border-0'
71
- style={{ width: '100%', outline: 'none', backgroundColor: 'transparent' }}
72
- value={knowledgeValue.qs.name}
73
- placeholder="Name"
74
- />
75
- </h4>
76
- </div>
77
- <div>
78
- <SaveButton
79
- key={knowledgeValue.knowledgeValueId}
80
- doc={knowledgeValue}
81
- onClick={saveChanges}
82
- />
83
- </div>
84
- </div>
85
-
86
- {/* <br /> */}
87
-
88
- <PeersUI
89
- key={forceRefreshOnTypeChange}
90
- uiEditMode="edit"
91
- uiCategory="details"
92
- props={{ knowledgeValue }}
93
- >
94
- <KnowledgeValueDefaultEditor knowledgeValue={knowledgeValue} />
95
- </PeersUI>
96
- </div>
97
- )
98
- }
99
-
100
- const Autosave = (props: { doc: IDoc<IKnowledgeValue> }) => {
101
- let p = setTimeout(() => { }, 0);
102
- const oldTypeId = props.doc.peerTypeId;
103
- useSubscription(props.doc.q, () => {
104
- clearTimeout(p);
105
- p = setTimeout(() => {
106
- if (props.doc.q() === 0) return;
107
- if (oldTypeId === props.doc.peerTypeId) {
108
- props.doc.lastModified = new Date();
109
- props.doc.save();
110
- } else {
111
- console.log('Not auto-saving because type changed which can cause unexpected data loss');
112
- }
113
- }, 2000);
114
- });
115
- return null;
116
- }
117
-
118
- const KnowledgeValueIcon = (props: { knowledgeValue: IDoc<IKnowledgeValue> }) => {
119
- const { knowledgeValue } = props;
120
-
121
- useObservable(knowledgeValue.qs.peerTypeId);
122
-
123
- const valueType = usePromise(async () => {
124
- const valueType = await PeerTypes().get(knowledgeValue.peerTypeId, { useCache: true });
125
- return valueType;
126
- }, undefined, [knowledgeValue.peerTypeId]);
127
-
128
- return (
129
- <Tooltip
130
- handle={
131
- <i className={"btn btn-secondary dropdown-toggle me-2 " + (valueType?.iconClass || "bi bi-diagram-2-fill")}>&nbsp;</i>
132
- }
133
- positions={['bottom', 'right', 'left']}
134
- genericContent={
135
- <div
136
- style={{ minWidth: 200 }}
137
- className="bg-dark p-2"
138
- >
139
- <small>
140
- Knowledge Type:
141
- </small>
142
- <Typeahead
143
- value={knowledgeValue.qs.peerTypeId}
144
- mentionConfigs={[valueTypeMentionConfig]}
145
- />
146
- </div>
147
- }
148
- />
149
- );
150
- }
151
-
152
- const KnowledgeValueDefaultEditor = (props: { knowledgeValue: IDoc<IKnowledgeValue> }) => {
153
- const { knowledgeValue } = props;
154
- const [peerTypeId] = useObservable(knowledgeValue.qs.peerTypeId);
155
-
156
- const valueType = usePromise(async () => {
157
- const valueType = await PeerTypes().get(peerTypeId);
158
- if (valueType) {
159
- return PeerTypes().initDoc(valueType);
160
- }
161
- }, null, [peerTypeId]);
162
-
163
- if (valueType === undefined) {
164
- return <div>Value Type {peerTypeId} not found in database</div>
165
- }
166
-
167
- if (!valueType) {
168
- return <LoadingIndicator />;
169
- }
170
-
171
- return (
172
- <div>
173
- <IOSchemaValues
174
- q={knowledgeValue.q}
175
- ioSchema={valueType.schema}
176
- values={knowledgeValue.value || {}}
177
- excludeFields={['name']}
178
- />
179
- </div>
180
- );
181
- }
@@ -1,48 +0,0 @@
1
- import { IKnowledgeValue, knowledgeValueSchema, PeerTypes } from "@peers-app/peers-sdk";
2
- import React from 'react';
3
- import { z } from 'zod';
4
- import { usePromise } from '../../hooks';
5
- import { registerInternalPeersUI } from '../../ui-router/ui-loader';
6
-
7
- export const KnowledgeValueListItem = (props: { knowledgeValue: IKnowledgeValue }) => {
8
- const { knowledgeValue } = props;
9
- const id = knowledgeValue.knowledgeValueId;
10
- const _item = knowledgeValue.value as any;
11
- const description = _item.description || _item.body || _item.content || _item.value;
12
-
13
- const peerType = usePromise(async () => {
14
- const peerType = await PeerTypes().get(knowledgeValue.peerTypeId, { useCache: true });
15
- return peerType;
16
- }, undefined, [knowledgeValue.peerTypeId]);
17
-
18
- const name = knowledgeValue.name || knowledgeValue.value?.name || knowledgeValue.knowledgeValueId;
19
-
20
- return (
21
- <div
22
- key={id}
23
- className='container-fluid pb-3'
24
- >
25
- <i style={{ cursor: 'pointer' }} className={peerType?.iconClass || "bi bi-diagram-2-fill"}></i>
26
- &nbsp;&nbsp;
27
- <a href={`#knowledge-values/${id}`}>
28
- {name || 'No Name'}
29
- </a>
30
- {/* <div style={{ paddingLeft: '20px' }}>
31
- <MarkdownWithMentions content={String(description || '').substring(0, 200)} />
32
- </div> */}
33
- </div>
34
- )
35
- }
36
-
37
- registerInternalPeersUI({
38
- peersUIId: '00m5enc2nj313e8neyf35f1gp',
39
- component: KnowledgeValueListItem,
40
- propsSchema: z.object({
41
- knowledgeValue: knowledgeValueSchema as any,
42
- }),
43
- routes: [{
44
- // isMatch: (props) => true,
45
- uiCategory: 'list-item',
46
- uiEditMode: 'view',
47
- }]
48
- });