@almadar/std 1.0.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.
- package/LICENSE +72 -0
- package/dist/behaviors/action-affinity.d.ts +88 -0
- package/dist/behaviors/action-affinity.js +290 -0
- package/dist/behaviors/action-affinity.js.map +1 -0
- package/dist/behaviors/async.d.ts +20 -0
- package/dist/behaviors/async.js +542 -0
- package/dist/behaviors/async.js.map +1 -0
- package/dist/behaviors/data-management.d.ts +40 -0
- package/dist/behaviors/data-management.js +495 -0
- package/dist/behaviors/data-management.js.map +1 -0
- package/dist/behaviors/feedback.d.ts +18 -0
- package/dist/behaviors/feedback.js +307 -0
- package/dist/behaviors/feedback.js.map +1 -0
- package/dist/behaviors/game-core.d.ts +40 -0
- package/dist/behaviors/game-core.js +443 -0
- package/dist/behaviors/game-core.js.map +1 -0
- package/dist/behaviors/game-entity.d.ts +39 -0
- package/dist/behaviors/game-entity.js +643 -0
- package/dist/behaviors/game-entity.js.map +1 -0
- package/dist/behaviors/game-ui.d.ts +29 -0
- package/dist/behaviors/game-ui.js +493 -0
- package/dist/behaviors/game-ui.js.map +1 -0
- package/dist/behaviors/index.d.ts +11 -0
- package/dist/behaviors/index.js +4539 -0
- package/dist/behaviors/index.js.map +1 -0
- package/dist/behaviors/registry.d.ts +103 -0
- package/dist/behaviors/registry.js +4166 -0
- package/dist/behaviors/registry.js.map +1 -0
- package/dist/behaviors/types.d.ts +179 -0
- package/dist/behaviors/types.js +111 -0
- package/dist/behaviors/types.js.map +1 -0
- package/dist/behaviors/ui-interaction.d.ts +36 -0
- package/dist/behaviors/ui-interaction.js +1104 -0
- package/dist/behaviors/ui-interaction.js.map +1 -0
- package/dist/index.d.ts +195 -0
- package/dist/index.js +8209 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/array.d.ts +28 -0
- package/dist/modules/array.js +556 -0
- package/dist/modules/array.js.map +1 -0
- package/dist/modules/async.d.ts +22 -0
- package/dist/modules/async.js +112 -0
- package/dist/modules/async.js.map +1 -0
- package/dist/modules/format.d.ts +21 -0
- package/dist/modules/format.js +129 -0
- package/dist/modules/format.js.map +1 -0
- package/dist/modules/index.d.ts +12 -0
- package/dist/modules/index.js +3131 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/math.d.ts +22 -0
- package/dist/modules/math.js +215 -0
- package/dist/modules/math.js.map +1 -0
- package/dist/modules/nn.d.ts +23 -0
- package/dist/modules/nn.js +189 -0
- package/dist/modules/nn.js.map +1 -0
- package/dist/modules/object.d.ts +22 -0
- package/dist/modules/object.js +257 -0
- package/dist/modules/object.js.map +1 -0
- package/dist/modules/str.d.ts +21 -0
- package/dist/modules/str.js +344 -0
- package/dist/modules/str.js.map +1 -0
- package/dist/modules/tensor.d.ts +23 -0
- package/dist/modules/tensor.js +427 -0
- package/dist/modules/tensor.js.map +1 -0
- package/dist/modules/time.d.ts +24 -0
- package/dist/modules/time.js +323 -0
- package/dist/modules/time.js.map +1 -0
- package/dist/modules/train.d.ts +23 -0
- package/dist/modules/train.js +308 -0
- package/dist/modules/train.js.map +1 -0
- package/dist/modules/validate.d.ts +23 -0
- package/dist/modules/validate.js +301 -0
- package/dist/modules/validate.js.map +1 -0
- package/dist/registry.d.ts +140 -0
- package/dist/registry.js +3240 -0
- package/dist/registry.js.map +1 -0
- package/dist/types-I95R8_FN.d.ts +91 -0
- package/package.json +59 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
// behaviors/feedback.ts
|
|
2
|
+
var NOTIFICATION_BEHAVIOR = {
|
|
3
|
+
name: "std/Notification",
|
|
4
|
+
category: "feedback",
|
|
5
|
+
description: "Toast notification with auto-dismiss",
|
|
6
|
+
suggestedFor: [
|
|
7
|
+
"Success messages",
|
|
8
|
+
"Error alerts",
|
|
9
|
+
"Status updates",
|
|
10
|
+
"User feedback"
|
|
11
|
+
],
|
|
12
|
+
dataEntities: [
|
|
13
|
+
{
|
|
14
|
+
name: "NotificationState",
|
|
15
|
+
runtime: true,
|
|
16
|
+
singleton: true,
|
|
17
|
+
fields: [
|
|
18
|
+
{ name: "notifications", type: "array", default: [] },
|
|
19
|
+
{ name: "currentId", type: "number", default: 0 }
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
stateMachine: {
|
|
24
|
+
initial: "Hidden",
|
|
25
|
+
states: [
|
|
26
|
+
{ name: "Hidden", isInitial: true },
|
|
27
|
+
{ name: "Visible" },
|
|
28
|
+
{ name: "Dismissing" }
|
|
29
|
+
],
|
|
30
|
+
events: [
|
|
31
|
+
{ key: "SHOW" },
|
|
32
|
+
{ key: "HIDE" },
|
|
33
|
+
{ key: "DISMISS" },
|
|
34
|
+
{ key: "AUTO_DISMISS" }
|
|
35
|
+
],
|
|
36
|
+
transitions: [
|
|
37
|
+
{
|
|
38
|
+
from: "*",
|
|
39
|
+
event: "SHOW",
|
|
40
|
+
effects: [
|
|
41
|
+
[
|
|
42
|
+
"let",
|
|
43
|
+
[["id", ["+", "@entity.currentId", 1]]],
|
|
44
|
+
[
|
|
45
|
+
"do",
|
|
46
|
+
["set", "@entity.currentId", "@id"],
|
|
47
|
+
[
|
|
48
|
+
"set",
|
|
49
|
+
"@entity.notifications",
|
|
50
|
+
["array/append", "@entity.notifications", {
|
|
51
|
+
id: "@id",
|
|
52
|
+
type: "@payload.type",
|
|
53
|
+
message: "@payload.message",
|
|
54
|
+
title: "@payload.title"
|
|
55
|
+
}]
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
"when",
|
|
59
|
+
[">", "@config.autoDismissMs", 0],
|
|
60
|
+
["async/delay", "@config.autoDismissMs", ["emit", "AUTO_DISMISS", { id: "@id" }]]
|
|
61
|
+
]
|
|
62
|
+
]
|
|
63
|
+
]
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
event: "DISMISS",
|
|
68
|
+
effects: [
|
|
69
|
+
[
|
|
70
|
+
"set",
|
|
71
|
+
"@entity.notifications",
|
|
72
|
+
["array/filter", "@entity.notifications", ["fn", "n", ["!=", "@n.id", "@payload.id"]]]
|
|
73
|
+
]
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
event: "AUTO_DISMISS",
|
|
78
|
+
effects: [
|
|
79
|
+
[
|
|
80
|
+
"set",
|
|
81
|
+
"@entity.notifications",
|
|
82
|
+
["array/filter", "@entity.notifications", ["fn", "n", ["!=", "@n.id", "@payload.id"]]]
|
|
83
|
+
]
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
event: "HIDE",
|
|
88
|
+
effects: [
|
|
89
|
+
["set", "@entity.notifications", []]
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
configSchema: {
|
|
95
|
+
required: [],
|
|
96
|
+
optional: [
|
|
97
|
+
{ name: "autoDismissMs", type: "number", description: "Auto dismiss delay (0 = no auto)", default: 5e3 },
|
|
98
|
+
{ name: "position", type: "string", description: "Toast position", default: "top-right", enum: ["top-left", "top-center", "top-right", "bottom-left", "bottom-center", "bottom-right"] },
|
|
99
|
+
{ name: "maxVisible", type: "number", description: "Maximum visible notifications", default: 5 }
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var CONFIRMATION_BEHAVIOR = {
|
|
104
|
+
name: "std/Confirmation",
|
|
105
|
+
category: "feedback",
|
|
106
|
+
description: "Confirmation dialog with confirm/cancel actions",
|
|
107
|
+
suggestedFor: [
|
|
108
|
+
"Delete confirmation",
|
|
109
|
+
"Destructive actions",
|
|
110
|
+
"Important decisions",
|
|
111
|
+
"Exit warnings"
|
|
112
|
+
],
|
|
113
|
+
dataEntities: [
|
|
114
|
+
{
|
|
115
|
+
name: "ConfirmationState",
|
|
116
|
+
runtime: true,
|
|
117
|
+
singleton: true,
|
|
118
|
+
fields: [
|
|
119
|
+
{ name: "title", type: "string", default: "" },
|
|
120
|
+
{ name: "message", type: "string", default: "" },
|
|
121
|
+
{ name: "pendingAction", type: "object", default: null }
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
stateMachine: {
|
|
126
|
+
initial: "Closed",
|
|
127
|
+
states: [
|
|
128
|
+
{ name: "Closed", isInitial: true },
|
|
129
|
+
{ name: "Open" }
|
|
130
|
+
],
|
|
131
|
+
events: [
|
|
132
|
+
{ key: "REQUEST" },
|
|
133
|
+
{ key: "CONFIRM" },
|
|
134
|
+
{ key: "CANCEL" }
|
|
135
|
+
],
|
|
136
|
+
transitions: [
|
|
137
|
+
{
|
|
138
|
+
from: "Closed",
|
|
139
|
+
to: "Open",
|
|
140
|
+
event: "REQUEST",
|
|
141
|
+
effects: [
|
|
142
|
+
["set", "@entity.title", "@payload.title"],
|
|
143
|
+
["set", "@entity.message", "@payload.message"],
|
|
144
|
+
["set", "@entity.pendingAction", "@payload.onConfirm"],
|
|
145
|
+
["render-ui", "modal", {
|
|
146
|
+
type: "confirmation",
|
|
147
|
+
title: "@entity.title",
|
|
148
|
+
message: "@entity.message",
|
|
149
|
+
confirmLabel: "@config.confirmLabel",
|
|
150
|
+
cancelLabel: "@config.cancelLabel",
|
|
151
|
+
confirmVariant: "@config.confirmVariant"
|
|
152
|
+
}]
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
from: "Open",
|
|
157
|
+
to: "Closed",
|
|
158
|
+
event: "CONFIRM",
|
|
159
|
+
effects: [
|
|
160
|
+
["render-ui", "modal", null],
|
|
161
|
+
["when", "@entity.pendingAction", ["emit", "@entity.pendingAction.event", "@entity.pendingAction.payload"]],
|
|
162
|
+
["set", "@entity.pendingAction", null]
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
from: "Open",
|
|
167
|
+
to: "Closed",
|
|
168
|
+
event: "CANCEL",
|
|
169
|
+
effects: [
|
|
170
|
+
["render-ui", "modal", null],
|
|
171
|
+
["set", "@entity.pendingAction", null]
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
configSchema: {
|
|
177
|
+
required: [],
|
|
178
|
+
optional: [
|
|
179
|
+
{ name: "confirmLabel", type: "string", description: "Confirm button label", default: "Confirm" },
|
|
180
|
+
{ name: "cancelLabel", type: "string", description: "Cancel button label", default: "Cancel" },
|
|
181
|
+
{ name: "confirmVariant", type: "string", description: "Confirm button variant", default: "primary", enum: ["primary", "danger", "warning"] }
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
var UNDO_BEHAVIOR = {
|
|
186
|
+
name: "std/Undo",
|
|
187
|
+
category: "feedback",
|
|
188
|
+
description: "Undo/redo stack for reversible actions",
|
|
189
|
+
suggestedFor: [
|
|
190
|
+
"Document editing",
|
|
191
|
+
"Form changes",
|
|
192
|
+
"Canvas operations",
|
|
193
|
+
"Reversible actions"
|
|
194
|
+
],
|
|
195
|
+
dataEntities: [
|
|
196
|
+
{
|
|
197
|
+
name: "UndoState",
|
|
198
|
+
runtime: true,
|
|
199
|
+
singleton: true,
|
|
200
|
+
fields: [
|
|
201
|
+
{ name: "undoStack", type: "array", default: [] },
|
|
202
|
+
{ name: "redoStack", type: "array", default: [] }
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
stateMachine: {
|
|
207
|
+
initial: "Ready",
|
|
208
|
+
states: [
|
|
209
|
+
{ name: "Ready", isInitial: true }
|
|
210
|
+
],
|
|
211
|
+
events: [
|
|
212
|
+
{ key: "PUSH" },
|
|
213
|
+
{ key: "UNDO" },
|
|
214
|
+
{ key: "REDO" },
|
|
215
|
+
{ key: "CLEAR" }
|
|
216
|
+
],
|
|
217
|
+
transitions: [
|
|
218
|
+
{
|
|
219
|
+
event: "PUSH",
|
|
220
|
+
effects: [
|
|
221
|
+
[
|
|
222
|
+
"set",
|
|
223
|
+
"@entity.undoStack",
|
|
224
|
+
[
|
|
225
|
+
"array/slice",
|
|
226
|
+
["array/prepend", "@entity.undoStack", {
|
|
227
|
+
action: "@payload.action",
|
|
228
|
+
data: "@payload.data",
|
|
229
|
+
reverseAction: "@payload.reverseAction",
|
|
230
|
+
reverseData: "@payload.reverseData",
|
|
231
|
+
description: "@payload.description"
|
|
232
|
+
}],
|
|
233
|
+
0,
|
|
234
|
+
"@config.maxHistory"
|
|
235
|
+
]
|
|
236
|
+
],
|
|
237
|
+
["set", "@entity.redoStack", []],
|
|
238
|
+
[
|
|
239
|
+
"when",
|
|
240
|
+
"@config.showToast",
|
|
241
|
+
["emit", "NOTIFY", {
|
|
242
|
+
type: "info",
|
|
243
|
+
message: ["str/concat", "@payload.description", " - Click to undo"],
|
|
244
|
+
action: { label: "Undo", event: "UNDO" }
|
|
245
|
+
}]
|
|
246
|
+
]
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
event: "UNDO",
|
|
251
|
+
guard: [">", ["array/len", "@entity.undoStack"], 0],
|
|
252
|
+
effects: [
|
|
253
|
+
[
|
|
254
|
+
"let",
|
|
255
|
+
[["action", ["array/first", "@entity.undoStack"]]],
|
|
256
|
+
[
|
|
257
|
+
"do",
|
|
258
|
+
["set", "@entity.undoStack", ["array/slice", "@entity.undoStack", 1]],
|
|
259
|
+
["set", "@entity.redoStack", ["array/prepend", "@entity.redoStack", "@action"]],
|
|
260
|
+
["emit", "@action.reverseAction", "@action.reverseData"]
|
|
261
|
+
]
|
|
262
|
+
]
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
event: "REDO",
|
|
267
|
+
guard: [">", ["array/len", "@entity.redoStack"], 0],
|
|
268
|
+
effects: [
|
|
269
|
+
[
|
|
270
|
+
"let",
|
|
271
|
+
[["action", ["array/first", "@entity.redoStack"]]],
|
|
272
|
+
[
|
|
273
|
+
"do",
|
|
274
|
+
["set", "@entity.redoStack", ["array/slice", "@entity.redoStack", 1]],
|
|
275
|
+
["set", "@entity.undoStack", ["array/prepend", "@entity.undoStack", "@action"]],
|
|
276
|
+
["emit", "@action.action", "@action.data"]
|
|
277
|
+
]
|
|
278
|
+
]
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
event: "CLEAR",
|
|
283
|
+
effects: [
|
|
284
|
+
["set", "@entity.undoStack", []],
|
|
285
|
+
["set", "@entity.redoStack", []]
|
|
286
|
+
]
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
configSchema: {
|
|
291
|
+
required: [],
|
|
292
|
+
optional: [
|
|
293
|
+
{ name: "maxHistory", type: "number", description: "Maximum undo history", default: 50 },
|
|
294
|
+
{ name: "showToast", type: "boolean", description: "Show undo toast", default: true },
|
|
295
|
+
{ name: "toastDurationMs", type: "number", description: "Toast display duration", default: 5e3 }
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
var FEEDBACK_BEHAVIORS = [
|
|
300
|
+
NOTIFICATION_BEHAVIOR,
|
|
301
|
+
CONFIRMATION_BEHAVIOR,
|
|
302
|
+
UNDO_BEHAVIOR
|
|
303
|
+
];
|
|
304
|
+
|
|
305
|
+
export { CONFIRMATION_BEHAVIOR, FEEDBACK_BEHAVIORS, NOTIFICATION_BEHAVIOR, UNDO_BEHAVIOR };
|
|
306
|
+
//# sourceMappingURL=feedback.js.map
|
|
307
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../behaviors/feedback.ts"],"names":[],"mappings":"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","file":"feedback.js","sourcesContent":["/**\n * Feedback Behaviors\n *\n * Standard behaviors for user feedback including notifications,\n * confirmations, and undo functionality.\n *\n * @packageDocumentation\n */\n\nimport type { StandardBehavior } from './types.js';\n\n// ============================================================================\n// std/Notification - Toast Notifications\n// ============================================================================\n\nexport const NOTIFICATION_BEHAVIOR: StandardBehavior = {\n name: 'std/Notification',\n category: 'feedback',\n description: 'Toast notification with auto-dismiss',\n suggestedFor: [\n 'Success messages',\n 'Error alerts',\n 'Status updates',\n 'User feedback',\n ],\n\n dataEntities: [\n {\n name: 'NotificationState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'notifications', type: 'array', default: [] },\n { name: 'currentId', type: 'number', default: 0 },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Hidden',\n states: [\n { name: 'Hidden', isInitial: true },\n { name: 'Visible' },\n { name: 'Dismissing' },\n ],\n events: [\n { key: 'SHOW' },\n { key: 'HIDE' },\n { key: 'DISMISS' },\n { key: 'AUTO_DISMISS' },\n ],\n transitions: [\n {\n from: '*',\n event: 'SHOW',\n effects: [\n ['let', [['id', ['+', '@entity.currentId', 1]]],\n ['do',\n ['set', '@entity.currentId', '@id'],\n ['set', '@entity.notifications',\n ['array/append', '@entity.notifications', {\n id: '@id',\n type: '@payload.type',\n message: '@payload.message',\n title: '@payload.title',\n }]],\n ['when', ['>', '@config.autoDismissMs', 0],\n ['async/delay', '@config.autoDismissMs', ['emit', 'AUTO_DISMISS', { id: '@id' }]]]]],\n ],\n },\n {\n event: 'DISMISS',\n effects: [\n ['set', '@entity.notifications',\n ['array/filter', '@entity.notifications', ['fn', 'n', ['!=', '@n.id', '@payload.id']]]],\n ],\n },\n {\n event: 'AUTO_DISMISS',\n effects: [\n ['set', '@entity.notifications',\n ['array/filter', '@entity.notifications', ['fn', 'n', ['!=', '@n.id', '@payload.id']]]],\n ],\n },\n {\n event: 'HIDE',\n effects: [\n ['set', '@entity.notifications', []],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'autoDismissMs', type: 'number', description: 'Auto dismiss delay (0 = no auto)', default: 5000 },\n { name: 'position', type: 'string', description: 'Toast position', default: 'top-right', enum: ['top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'] },\n { name: 'maxVisible', type: 'number', description: 'Maximum visible notifications', default: 5 },\n ],\n },\n};\n\n// ============================================================================\n// std/Confirmation - Confirmation Dialog\n// ============================================================================\n\nexport const CONFIRMATION_BEHAVIOR: StandardBehavior = {\n name: 'std/Confirmation',\n category: 'feedback',\n description: 'Confirmation dialog with confirm/cancel actions',\n suggestedFor: [\n 'Delete confirmation',\n 'Destructive actions',\n 'Important decisions',\n 'Exit warnings',\n ],\n\n dataEntities: [\n {\n name: 'ConfirmationState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'title', type: 'string', default: '' },\n { name: 'message', type: 'string', default: '' },\n { name: 'pendingAction', type: 'object', default: null },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Closed',\n states: [\n { name: 'Closed', isInitial: true },\n { name: 'Open' },\n ],\n events: [\n { key: 'REQUEST' },\n { key: 'CONFIRM' },\n { key: 'CANCEL' },\n ],\n transitions: [\n {\n from: 'Closed',\n to: 'Open',\n event: 'REQUEST',\n effects: [\n ['set', '@entity.title', '@payload.title'],\n ['set', '@entity.message', '@payload.message'],\n ['set', '@entity.pendingAction', '@payload.onConfirm'],\n ['render-ui', 'modal', {\n type: 'confirmation',\n title: '@entity.title',\n message: '@entity.message',\n confirmLabel: '@config.confirmLabel',\n cancelLabel: '@config.cancelLabel',\n confirmVariant: '@config.confirmVariant',\n }],\n ],\n },\n {\n from: 'Open',\n to: 'Closed',\n event: 'CONFIRM',\n effects: [\n ['render-ui', 'modal', null],\n ['when', '@entity.pendingAction', ['emit', '@entity.pendingAction.event', '@entity.pendingAction.payload']],\n ['set', '@entity.pendingAction', null],\n ],\n },\n {\n from: 'Open',\n to: 'Closed',\n event: 'CANCEL',\n effects: [\n ['render-ui', 'modal', null],\n ['set', '@entity.pendingAction', null],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'confirmLabel', type: 'string', description: 'Confirm button label', default: 'Confirm' },\n { name: 'cancelLabel', type: 'string', description: 'Cancel button label', default: 'Cancel' },\n { name: 'confirmVariant', type: 'string', description: 'Confirm button variant', default: 'primary', enum: ['primary', 'danger', 'warning'] },\n ],\n },\n};\n\n// ============================================================================\n// std/Undo - Undo Stack\n// ============================================================================\n\nexport const UNDO_BEHAVIOR: StandardBehavior = {\n name: 'std/Undo',\n category: 'feedback',\n description: 'Undo/redo stack for reversible actions',\n suggestedFor: [\n 'Document editing',\n 'Form changes',\n 'Canvas operations',\n 'Reversible actions',\n ],\n\n dataEntities: [\n {\n name: 'UndoState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'undoStack', type: 'array', default: [] },\n { name: 'redoStack', type: 'array', default: [] },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Ready',\n states: [\n { name: 'Ready', isInitial: true },\n ],\n events: [\n { key: 'PUSH' },\n { key: 'UNDO' },\n { key: 'REDO' },\n { key: 'CLEAR' },\n ],\n transitions: [\n {\n event: 'PUSH',\n effects: [\n ['set', '@entity.undoStack',\n ['array/slice',\n ['array/prepend', '@entity.undoStack', {\n action: '@payload.action',\n data: '@payload.data',\n reverseAction: '@payload.reverseAction',\n reverseData: '@payload.reverseData',\n description: '@payload.description',\n }],\n 0, '@config.maxHistory']],\n ['set', '@entity.redoStack', []],\n ['when', '@config.showToast',\n ['emit', 'NOTIFY', {\n type: 'info',\n message: ['str/concat', '@payload.description', ' - Click to undo'],\n action: { label: 'Undo', event: 'UNDO' },\n }]],\n ],\n },\n {\n event: 'UNDO',\n guard: ['>', ['array/len', '@entity.undoStack'], 0],\n effects: [\n ['let', [['action', ['array/first', '@entity.undoStack']]],\n ['do',\n ['set', '@entity.undoStack', ['array/slice', '@entity.undoStack', 1]],\n ['set', '@entity.redoStack', ['array/prepend', '@entity.redoStack', '@action']],\n ['emit', '@action.reverseAction', '@action.reverseData']]],\n ],\n },\n {\n event: 'REDO',\n guard: ['>', ['array/len', '@entity.redoStack'], 0],\n effects: [\n ['let', [['action', ['array/first', '@entity.redoStack']]],\n ['do',\n ['set', '@entity.redoStack', ['array/slice', '@entity.redoStack', 1]],\n ['set', '@entity.undoStack', ['array/prepend', '@entity.undoStack', '@action']],\n ['emit', '@action.action', '@action.data']]],\n ],\n },\n {\n event: 'CLEAR',\n effects: [\n ['set', '@entity.undoStack', []],\n ['set', '@entity.redoStack', []],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'maxHistory', type: 'number', description: 'Maximum undo history', default: 50 },\n { name: 'showToast', type: 'boolean', description: 'Show undo toast', default: true },\n { name: 'toastDurationMs', type: 'number', description: 'Toast display duration', default: 5000 },\n ],\n },\n};\n\n// ============================================================================\n// Export All Feedback Behaviors\n// ============================================================================\n\nexport const FEEDBACK_BEHAVIORS: StandardBehavior[] = [\n NOTIFICATION_BEHAVIOR,\n CONFIRMATION_BEHAVIOR,\n UNDO_BEHAVIOR,\n];\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { StandardBehavior } from './types.js';
|
|
2
|
+
import '@almadar/core/types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Game Core Behaviors
|
|
6
|
+
*
|
|
7
|
+
* Foundation behaviors for game systems: loop, physics, input, collision.
|
|
8
|
+
* These use the Trait architecture with stateMachine and ticks.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* std/GameLoop - Coordinates game tick execution at 60fps.
|
|
15
|
+
*
|
|
16
|
+
* States: Running, Paused
|
|
17
|
+
* Provides the master clock for all game systems.
|
|
18
|
+
*/
|
|
19
|
+
declare const GAME_LOOP_BEHAVIOR: StandardBehavior;
|
|
20
|
+
/**
|
|
21
|
+
* std/Physics2D - 2D physics with gravity, velocity, and friction.
|
|
22
|
+
*
|
|
23
|
+
* Applied to entities that need physics simulation.
|
|
24
|
+
*/
|
|
25
|
+
declare const PHYSICS_2D_BEHAVIOR: StandardBehavior;
|
|
26
|
+
/**
|
|
27
|
+
* std/Input - Manages keyboard and touch input state.
|
|
28
|
+
*
|
|
29
|
+
* Singleton behavior that tracks all input state.
|
|
30
|
+
*/
|
|
31
|
+
declare const INPUT_BEHAVIOR: StandardBehavior;
|
|
32
|
+
/**
|
|
33
|
+
* std/Collision - Handles collision detection and response.
|
|
34
|
+
*
|
|
35
|
+
* Configures how an entity responds to collisions.
|
|
36
|
+
*/
|
|
37
|
+
declare const COLLISION_BEHAVIOR: StandardBehavior;
|
|
38
|
+
declare const GAME_CORE_BEHAVIORS: StandardBehavior[];
|
|
39
|
+
|
|
40
|
+
export { COLLISION_BEHAVIOR, GAME_CORE_BEHAVIORS, GAME_LOOP_BEHAVIOR, INPUT_BEHAVIOR, PHYSICS_2D_BEHAVIOR };
|