@case-framework/survey-core 0.3.0 → 0.4.1
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/README.md +31 -34
- package/build/editor.d.mts +78 -19
- package/build/editor.d.mts.map +1 -1
- package/build/editor.mjs +247 -43
- package/build/editor.mjs.map +1 -1
- package/build/index.d.mts +76 -54
- package/build/index.d.mts.map +1 -1
- package/build/index.mjs +171 -69
- package/build/index.mjs.map +1 -1
- package/build/package.json +27 -27
- package/build/{survey-wnGyIY66.d.mts → survey-BV8YHc3J.d.mts} +378 -86
- package/build/survey-BV8YHc3J.d.mts.map +1 -0
- package/build/{survey-DJbgFVPz.mjs → survey-DnLtf19j.mjs} +429 -32
- package/build/survey-DnLtf19j.mjs.map +1 -0
- package/package.json +21 -21
- package/build/survey-DJbgFVPz.mjs.map +0 -1
- package/build/survey-wnGyIY66.d.mts.map +0 -1
package/README.md
CHANGED
|
@@ -52,15 +52,18 @@ import {
|
|
|
52
52
|
ValueRefTypeLookup,
|
|
53
53
|
ValueType,
|
|
54
54
|
ItemTypeRegistry,
|
|
55
|
-
} from
|
|
55
|
+
} from "@case-framework/survey-core";
|
|
56
56
|
|
|
57
57
|
type SingleChoiceConfig = {
|
|
58
58
|
id: string;
|
|
59
59
|
options: Array<{ id: string; key: string; type: string }>;
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
class SingleChoiceQuestionItemCore extends SurveyItemCore<
|
|
63
|
-
|
|
62
|
+
class SingleChoiceQuestionItemCore extends SurveyItemCore<
|
|
63
|
+
"singleChoiceQuestion",
|
|
64
|
+
SingleChoiceConfig
|
|
65
|
+
> {
|
|
66
|
+
readonly type = "singleChoiceQuestion";
|
|
64
67
|
|
|
65
68
|
parseConfig(rawConfig: unknown): SingleChoiceConfig {
|
|
66
69
|
const cfg = (rawConfig ?? {}) as Partial<SingleChoiceConfig>;
|
|
@@ -96,45 +99,42 @@ import {
|
|
|
96
99
|
ResponseItem,
|
|
97
100
|
ValueType,
|
|
98
101
|
ReservedSurveyItemTypes,
|
|
99
|
-
} from
|
|
102
|
+
} from "@case-framework/survey-core";
|
|
100
103
|
|
|
101
104
|
const survey = Survey.fromJson(
|
|
102
105
|
{
|
|
103
106
|
$schema:
|
|
104
|
-
|
|
107
|
+
"https://github.com/case-framework/case-survey-toolkit/packages/survey-core/schemas/survey-schema.json",
|
|
105
108
|
surveyItems: [
|
|
106
109
|
{
|
|
107
|
-
id:
|
|
108
|
-
key:
|
|
110
|
+
id: "root",
|
|
111
|
+
key: "root",
|
|
109
112
|
itemType: ReservedSurveyItemTypes.Group,
|
|
110
|
-
config: { isRoot: true, items: [
|
|
113
|
+
config: { isRoot: true, items: ["q1"] },
|
|
111
114
|
},
|
|
112
115
|
{
|
|
113
|
-
id:
|
|
114
|
-
key:
|
|
115
|
-
itemType:
|
|
116
|
+
id: "q1",
|
|
117
|
+
key: "q1",
|
|
118
|
+
itemType: "singleChoiceQuestion",
|
|
116
119
|
config: {
|
|
117
|
-
id:
|
|
120
|
+
id: "q1",
|
|
118
121
|
options: [
|
|
119
|
-
{ id:
|
|
120
|
-
{ id:
|
|
122
|
+
{ id: "yes", key: "yes", type: "option" },
|
|
123
|
+
{ id: "no", key: "no", type: "option" },
|
|
121
124
|
],
|
|
122
125
|
},
|
|
123
126
|
},
|
|
124
127
|
],
|
|
125
128
|
},
|
|
126
|
-
pluginRegistry
|
|
129
|
+
pluginRegistry,
|
|
127
130
|
);
|
|
128
131
|
|
|
129
|
-
const engine = new SurveyEngineCore(survey, { locale:
|
|
132
|
+
const engine = new SurveyEngineCore(survey, { locale: "en" });
|
|
130
133
|
|
|
131
134
|
// Set one item response (slot id == config.id in this example).
|
|
132
|
-
engine.setResponse(
|
|
133
|
-
'q1',
|
|
134
|
-
new ResponseItem([['q1', { type: ValueType.reference, value: 'yes' }]])
|
|
135
|
-
);
|
|
135
|
+
engine.setResponse("q1", new ResponseItem([["q1", { type: ValueType.reference, value: "yes" }]]));
|
|
136
136
|
|
|
137
|
-
const pages = engine.getSurveyPages(
|
|
137
|
+
const pages = engine.getSurveyPages("large");
|
|
138
138
|
const responses = engine.getResponses();
|
|
139
139
|
const events = engine.getEvents();
|
|
140
140
|
```
|
|
@@ -142,19 +142,16 @@ const events = engine.getEvents();
|
|
|
142
142
|
### 3. Export responses to CSV
|
|
143
143
|
|
|
144
144
|
```ts
|
|
145
|
-
import {
|
|
146
|
-
SurveyResponse,
|
|
147
|
-
SurveyResponseExporter,
|
|
148
|
-
} from '@case-framework/survey-core';
|
|
145
|
+
import { SurveyResponse, SurveyResponseExporter } from "@case-framework/survey-core";
|
|
149
146
|
|
|
150
|
-
const response = new SurveyResponse(
|
|
147
|
+
const response = new SurveyResponse("response-1", "v1");
|
|
151
148
|
response.responses = new Map(responses.map((r) => [r.itemId, r]));
|
|
152
149
|
response.submittedAt = Math.floor(Date.now() / 1000);
|
|
153
150
|
|
|
154
151
|
const exporter = new SurveyResponseExporter([
|
|
155
152
|
{
|
|
156
|
-
versionId:
|
|
157
|
-
surveyKey: survey.surveyKey ??
|
|
153
|
+
versionId: "v1",
|
|
154
|
+
surveyKey: survey.surveyKey ?? "survey",
|
|
158
155
|
survey,
|
|
159
156
|
},
|
|
160
157
|
]);
|
|
@@ -165,17 +162,17 @@ const csv = exporter.exportResponsesToCsv([response]);
|
|
|
165
162
|
### 4. Edit surveys with the editor entrypoint
|
|
166
163
|
|
|
167
164
|
```ts
|
|
168
|
-
import { SurveyEditor, CommitSource } from
|
|
165
|
+
import { SurveyEditor, CommitSource } from "@case-framework/survey-core/editor";
|
|
169
166
|
|
|
170
167
|
const editor = new SurveyEditor(survey, { pluginRegistry });
|
|
171
168
|
|
|
172
169
|
const newItem = survey.createItemFromRaw({
|
|
173
|
-
id:
|
|
174
|
-
key:
|
|
175
|
-
itemType:
|
|
176
|
-
config: { id:
|
|
170
|
+
id: "q2",
|
|
171
|
+
key: "q2",
|
|
172
|
+
itemType: "singleChoiceQuestion",
|
|
173
|
+
config: { id: "q2", options: [] },
|
|
177
174
|
});
|
|
178
175
|
|
|
179
176
|
editor.addItem({ parentId: survey.rootItem!.id }, newItem);
|
|
180
|
-
editor.commit({ label:
|
|
177
|
+
editor.commit({ label: "Add q2", source: CommitSource.USER });
|
|
181
178
|
```
|
package/build/editor.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { D as SurveyCardContent, E as NavigationContent, Gt as SurveyItemCore, Jt as RawSurveyItem, M as Content, S as RawSurveyAsset, k as SurveyItemTranslations, m as ItemTypeRegistry, t as Survey, vt as TemplateValueDefinition, w as JsonComponentContent, x as RawSurvey } from "./survey-BV8YHc3J.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/editor/ai-context.d.ts
|
|
4
4
|
type SurveyAIContextScope = "tiny" | "focused" | "full";
|
|
@@ -89,7 +89,7 @@ type SerializedTranslations = {
|
|
|
89
89
|
[locale: string]: JsonComponentContent;
|
|
90
90
|
};
|
|
91
91
|
interface SurveyItemClipboardData {
|
|
92
|
-
type:
|
|
92
|
+
type: "survey-item";
|
|
93
93
|
version: string;
|
|
94
94
|
items: Array<{
|
|
95
95
|
itemId: string;
|
|
@@ -145,12 +145,12 @@ declare class ItemCopyPaste {
|
|
|
145
145
|
*/
|
|
146
146
|
private updateExpressionReferences;
|
|
147
147
|
/**
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
* Update translation keys for the pasted item
|
|
149
|
+
*/
|
|
150
150
|
private updateTranslations;
|
|
151
151
|
/**
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
* Validate clipboard data format
|
|
153
|
+
*/
|
|
154
154
|
static isValidClipboardData(data: unknown): data is SurveyItemClipboardData;
|
|
155
155
|
}
|
|
156
156
|
//#endregion
|
|
@@ -164,27 +164,60 @@ declare const CommitSource: {
|
|
|
164
164
|
readonly USER: "user";
|
|
165
165
|
readonly SYSTEM: "system";
|
|
166
166
|
};
|
|
167
|
-
type CommitSource = typeof CommitSource[keyof typeof CommitSource];
|
|
167
|
+
type CommitSource = (typeof CommitSource)[keyof typeof CommitSource];
|
|
168
168
|
interface CommitMeta {
|
|
169
169
|
label: string;
|
|
170
170
|
source?: CommitSource;
|
|
171
171
|
}
|
|
172
|
-
interface
|
|
173
|
-
|
|
172
|
+
interface AssetPatch {
|
|
173
|
+
assetId: string;
|
|
174
|
+
prev?: RawSurveyAsset;
|
|
175
|
+
next?: RawSurveyAsset;
|
|
176
|
+
}
|
|
177
|
+
interface BaseHistoryEntry {
|
|
174
178
|
timestamp: number;
|
|
175
179
|
meta: CommitMeta;
|
|
176
180
|
memorySize: number;
|
|
177
181
|
}
|
|
182
|
+
interface SurveySnapshotHistoryEntry extends BaseHistoryEntry {
|
|
183
|
+
kind: "survey-snapshot";
|
|
184
|
+
survey: RawSurvey;
|
|
185
|
+
}
|
|
186
|
+
interface AssetChangeHistoryEntry extends BaseHistoryEntry {
|
|
187
|
+
kind: "asset-change";
|
|
188
|
+
changes: AssetPatch[];
|
|
189
|
+
}
|
|
190
|
+
type HistoryEntry = SurveySnapshotHistoryEntry | AssetChangeHistoryEntry;
|
|
191
|
+
interface SurveyEditorHistoryCommit {
|
|
192
|
+
index: number;
|
|
193
|
+
kind: HistoryEntry["kind"];
|
|
194
|
+
meta: CommitMeta;
|
|
195
|
+
timestamp: number;
|
|
196
|
+
memorySize: number;
|
|
197
|
+
isCurrent: boolean;
|
|
198
|
+
}
|
|
199
|
+
type SerializedHistoryEntry = SurveySnapshotHistoryEntry | AssetChangeHistoryEntry | (BaseHistoryEntry & {
|
|
200
|
+
survey: RawSurvey;
|
|
201
|
+
});
|
|
178
202
|
declare class SurveyEditorUndoRedo {
|
|
179
203
|
private history;
|
|
180
204
|
private currentIndex;
|
|
181
205
|
private _config;
|
|
182
|
-
|
|
206
|
+
private _initialAssets?;
|
|
207
|
+
constructor(initialSurvey: RawSurvey, config?: Partial<UndoRedoConfig>, meta?: CommitMeta, initialAssets?: Record<string, RawSurveyAsset>);
|
|
208
|
+
private saveEntry;
|
|
183
209
|
private saveSnapshot;
|
|
210
|
+
private getBaseAssetsSize;
|
|
184
211
|
private cleanupHistory;
|
|
212
|
+
private dropOldestState;
|
|
185
213
|
private getTotalMemoryUsage;
|
|
214
|
+
private getStateAtIndex;
|
|
215
|
+
private applyAssetPatch;
|
|
216
|
+
private getAssetsAtIndex;
|
|
186
217
|
commit(survey: RawSurvey, meta: CommitMeta): void;
|
|
218
|
+
commitAssetChange(changes: AssetPatch[], meta: CommitMeta): void;
|
|
187
219
|
getCurrentState(): RawSurvey;
|
|
220
|
+
getCurrentAssets(): Record<string, RawSurveyAsset> | undefined;
|
|
188
221
|
undo(): RawSurvey | null;
|
|
189
222
|
redo(): RawSurvey | null;
|
|
190
223
|
canUndo(): boolean;
|
|
@@ -201,11 +234,19 @@ declare class SurveyEditorUndoRedo {
|
|
|
201
234
|
*/
|
|
202
235
|
getHistory(): Array<{
|
|
203
236
|
index: number;
|
|
237
|
+
kind: HistoryEntry["kind"];
|
|
204
238
|
meta: CommitMeta;
|
|
205
239
|
timestamp: number;
|
|
206
240
|
memorySize: number;
|
|
207
241
|
isCurrent: boolean;
|
|
208
242
|
}>;
|
|
243
|
+
/**
|
|
244
|
+
* Get committed history entries after the initial state up to the current index.
|
|
245
|
+
*
|
|
246
|
+
* Redo-only future entries are intentionally omitted so the returned list describes the active
|
|
247
|
+
* change chain from the initial state to the current editor state.
|
|
248
|
+
*/
|
|
249
|
+
getCommitsSinceInitial(): SurveyEditorHistoryCommit[];
|
|
209
250
|
/**
|
|
210
251
|
* Get the current index in the history
|
|
211
252
|
*/
|
|
@@ -232,6 +273,7 @@ declare class SurveyEditorUndoRedo {
|
|
|
232
273
|
history: Array<HistoryEntry>;
|
|
233
274
|
currentIndex: number;
|
|
234
275
|
config: UndoRedoConfig;
|
|
276
|
+
initialAssets?: Record<string, RawSurveyAsset>;
|
|
235
277
|
};
|
|
236
278
|
/**
|
|
237
279
|
* Create a new SurveyEditorUndoRedo instance from JSON data
|
|
@@ -239,22 +281,18 @@ declare class SurveyEditorUndoRedo {
|
|
|
239
281
|
* @returns A new SurveyEditorUndoRedo instance with the restored state
|
|
240
282
|
*/
|
|
241
283
|
static deserialize(jsonData: {
|
|
242
|
-
history: Array<
|
|
243
|
-
survey: RawSurvey;
|
|
244
|
-
timestamp: number;
|
|
245
|
-
meta: CommitMeta;
|
|
246
|
-
memorySize: number;
|
|
247
|
-
}>;
|
|
284
|
+
history: Array<SerializedHistoryEntry>;
|
|
248
285
|
currentIndex: number;
|
|
249
286
|
config: UndoRedoConfig;
|
|
250
|
-
|
|
287
|
+
initialAssets?: Record<string, RawSurveyAsset>;
|
|
288
|
+
}, initialAssetsOverride?: Record<string, RawSurveyAsset>): SurveyEditorUndoRedo;
|
|
251
289
|
}
|
|
252
290
|
//#endregion
|
|
253
291
|
//#region src/editor/survey-editor.d.ts
|
|
254
292
|
interface SerializedSurveyEditor {
|
|
255
293
|
version: string;
|
|
256
294
|
survey: RawSurvey;
|
|
257
|
-
undoRedo: ReturnType<SurveyEditorUndoRedo[
|
|
295
|
+
undoRedo: ReturnType<SurveyEditorUndoRedo["serialize"]>;
|
|
258
296
|
hasUncommittedChanges: boolean;
|
|
259
297
|
}
|
|
260
298
|
interface SurveyEditorConfig extends Partial<UndoRedoConfig> {
|
|
@@ -272,6 +310,7 @@ declare class SurveyEditor {
|
|
|
272
310
|
get hasUncommittedChanges(): boolean;
|
|
273
311
|
get undoRedo(): SurveyEditorUndoRedo;
|
|
274
312
|
commit(meta: CommitMeta): void;
|
|
313
|
+
private restoreHistoryState;
|
|
275
314
|
commitIfNeeded(): void;
|
|
276
315
|
undo(): boolean;
|
|
277
316
|
redo(): boolean;
|
|
@@ -288,6 +327,10 @@ declare class SurveyEditor {
|
|
|
288
327
|
entries: number;
|
|
289
328
|
};
|
|
290
329
|
getUndoRedoConfig(): UndoRedoConfig;
|
|
330
|
+
/**
|
|
331
|
+
* Get committed changes after the initial editor state up to the current undo/redo position.
|
|
332
|
+
*/
|
|
333
|
+
getCommitsSinceInitial(): SurveyEditorHistoryCommit[];
|
|
291
334
|
/**
|
|
292
335
|
* Serialize the SurveyEditor state to JSON
|
|
293
336
|
* @returns A JSON-serializable object containing the complete editor state
|
|
@@ -390,6 +433,22 @@ declare class SurveyEditor {
|
|
|
390
433
|
* Remove a template value.
|
|
391
434
|
*/
|
|
392
435
|
removeTemplateValue(key: string): void;
|
|
436
|
+
/**
|
|
437
|
+
* Get a survey asset immutably.
|
|
438
|
+
*/
|
|
439
|
+
getAsset(assetId: string): RawSurveyAsset | undefined;
|
|
440
|
+
/**
|
|
441
|
+
* Get all survey assets immutably.
|
|
442
|
+
*/
|
|
443
|
+
getAssets(): Map<string, RawSurveyAsset>;
|
|
444
|
+
/**
|
|
445
|
+
* Add or replace a survey asset.
|
|
446
|
+
*/
|
|
447
|
+
setAsset(assetId: string, asset: RawSurveyAsset): void;
|
|
448
|
+
/**
|
|
449
|
+
* Remove a survey asset.
|
|
450
|
+
*/
|
|
451
|
+
removeAsset(assetId: string): void;
|
|
393
452
|
/**
|
|
394
453
|
* Copy a survey item and all its data to clipboard format
|
|
395
454
|
* @param itemId - The ID of the item to copy
|
|
@@ -405,5 +464,5 @@ declare class SurveyEditor {
|
|
|
405
464
|
pasteItem(clipboardData: SurveyItemClipboardData, target: Target): string;
|
|
406
465
|
}
|
|
407
466
|
//#endregion
|
|
408
|
-
export { BuildSurveyAIContextPackOptions, CommitMeta, CommitSource, ItemCopyPaste, SerializedSurveyEditor, SerializedTranslations, SurveyAIContextIndexes, SurveyAIContextPack, SurveyAIContextPurpose, SurveyAIContextScope, SurveyAIFocus, SurveyAIItemContextNode, SurveyAIKeyIndexEntry, SurveyAIOutlineNode, SurveyAITranslationSnippet, SurveyEditor, SurveyEditorConfig, SurveyEditorUndoRedo, SurveyItemClipboardData, Target, UndoRedoConfig, buildSurveyAIContextPack };
|
|
467
|
+
export { AssetPatch, BuildSurveyAIContextPackOptions, CommitMeta, CommitSource, ItemCopyPaste, SerializedSurveyEditor, SerializedTranslations, SurveyAIContextIndexes, SurveyAIContextPack, SurveyAIContextPurpose, SurveyAIContextScope, SurveyAIFocus, SurveyAIItemContextNode, SurveyAIKeyIndexEntry, SurveyAIOutlineNode, SurveyAITranslationSnippet, SurveyEditor, SurveyEditorConfig, SurveyEditorHistoryCommit, SurveyEditorUndoRedo, SurveyItemClipboardData, Target, UndoRedoConfig, buildSurveyAIContextPack };
|
|
409
468
|
//# sourceMappingURL=editor.d.mts.map
|
package/build/editor.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.mts","names":[],"sources":["../src/editor/ai-context.ts","../src/editor/types.ts","../src/editor/item-copy-paste.ts","../src/editor/undo-redo.ts","../src/editor/survey-editor.ts"],"mappings":";;;KAKY,oBAAA;AAAA,KACA,sBAAA;AAAA,UAQK,mBAAA;EACf,MAAA;EACA,QAAA;EACA,KAAA;EACA,QAAA;EACA,GAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;AAAA;AAAA,UAGe,aAAA;EACf,WAAA;EACA,YAAA;EACA,WAAA;EACA,cAAA;EACA,YAAA;AAAA;AAAA,UAGe,0BAAA;EACf,MAAA;EACA,UAAA;EACA,IAAA;AAAA;AAAA,UAGe,uBAAA;EACf,MAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA,EAAc,0BAAA;EACd,WAAA,EAAa,uBAAA;AAAA;AAAA,UAGE,qBAAA;EACf,MAAA;EACA,QAAA;EACA,GAAA;EACA,OAAA;EACA,SAAA;EACA,IAAA;AAAA;AAAA,UAGe,sBAAA;EACf,QAAA,EAAU,qBAAA;EACV,aAAA;AAAA;AAAA,UAGe,mBAAA;EACf,OAAA,EAAS,sBAAA;EACT,KAAA,EAAO,oBAAA;EACP,SAAA;EACA,OAAA;EACA,SAAA;EACA,OAAA,EAAS,mBAAA;EACT,KAAA,GAAQ,aAAA;EACR,SAAA,GAAY,uBAAA;EACZ,OAAA,GAAU,sBAAA;EACV,KAAA;IACE,gBAAA;IACA,iBAAA;IACA,sBAAA;EAAA;EAEF,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,+BAAA;EACf,OAAA,GAAU,sBAAA;EACV,KAAA,GAAQ,oBAAA;EACR,WAAA;EACA,gBAAA;EACA,YAAA;EACA,cAAA;EACA,oBAAA;EACA,kBAAA;EACA,+BAAA;EACA,2BAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"editor.d.mts","names":[],"sources":["../src/editor/ai-context.ts","../src/editor/types.ts","../src/editor/item-copy-paste.ts","../src/editor/undo-redo.ts","../src/editor/survey-editor.ts"],"mappings":"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"}
|