@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.
Files changed (78) hide show
  1. package/LICENSE +72 -0
  2. package/dist/behaviors/action-affinity.d.ts +88 -0
  3. package/dist/behaviors/action-affinity.js +290 -0
  4. package/dist/behaviors/action-affinity.js.map +1 -0
  5. package/dist/behaviors/async.d.ts +20 -0
  6. package/dist/behaviors/async.js +542 -0
  7. package/dist/behaviors/async.js.map +1 -0
  8. package/dist/behaviors/data-management.d.ts +40 -0
  9. package/dist/behaviors/data-management.js +495 -0
  10. package/dist/behaviors/data-management.js.map +1 -0
  11. package/dist/behaviors/feedback.d.ts +18 -0
  12. package/dist/behaviors/feedback.js +307 -0
  13. package/dist/behaviors/feedback.js.map +1 -0
  14. package/dist/behaviors/game-core.d.ts +40 -0
  15. package/dist/behaviors/game-core.js +443 -0
  16. package/dist/behaviors/game-core.js.map +1 -0
  17. package/dist/behaviors/game-entity.d.ts +39 -0
  18. package/dist/behaviors/game-entity.js +643 -0
  19. package/dist/behaviors/game-entity.js.map +1 -0
  20. package/dist/behaviors/game-ui.d.ts +29 -0
  21. package/dist/behaviors/game-ui.js +493 -0
  22. package/dist/behaviors/game-ui.js.map +1 -0
  23. package/dist/behaviors/index.d.ts +11 -0
  24. package/dist/behaviors/index.js +4539 -0
  25. package/dist/behaviors/index.js.map +1 -0
  26. package/dist/behaviors/registry.d.ts +103 -0
  27. package/dist/behaviors/registry.js +4166 -0
  28. package/dist/behaviors/registry.js.map +1 -0
  29. package/dist/behaviors/types.d.ts +179 -0
  30. package/dist/behaviors/types.js +111 -0
  31. package/dist/behaviors/types.js.map +1 -0
  32. package/dist/behaviors/ui-interaction.d.ts +36 -0
  33. package/dist/behaviors/ui-interaction.js +1104 -0
  34. package/dist/behaviors/ui-interaction.js.map +1 -0
  35. package/dist/index.d.ts +195 -0
  36. package/dist/index.js +8209 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/modules/array.d.ts +28 -0
  39. package/dist/modules/array.js +556 -0
  40. package/dist/modules/array.js.map +1 -0
  41. package/dist/modules/async.d.ts +22 -0
  42. package/dist/modules/async.js +112 -0
  43. package/dist/modules/async.js.map +1 -0
  44. package/dist/modules/format.d.ts +21 -0
  45. package/dist/modules/format.js +129 -0
  46. package/dist/modules/format.js.map +1 -0
  47. package/dist/modules/index.d.ts +12 -0
  48. package/dist/modules/index.js +3131 -0
  49. package/dist/modules/index.js.map +1 -0
  50. package/dist/modules/math.d.ts +22 -0
  51. package/dist/modules/math.js +215 -0
  52. package/dist/modules/math.js.map +1 -0
  53. package/dist/modules/nn.d.ts +23 -0
  54. package/dist/modules/nn.js +189 -0
  55. package/dist/modules/nn.js.map +1 -0
  56. package/dist/modules/object.d.ts +22 -0
  57. package/dist/modules/object.js +257 -0
  58. package/dist/modules/object.js.map +1 -0
  59. package/dist/modules/str.d.ts +21 -0
  60. package/dist/modules/str.js +344 -0
  61. package/dist/modules/str.js.map +1 -0
  62. package/dist/modules/tensor.d.ts +23 -0
  63. package/dist/modules/tensor.js +427 -0
  64. package/dist/modules/tensor.js.map +1 -0
  65. package/dist/modules/time.d.ts +24 -0
  66. package/dist/modules/time.js +323 -0
  67. package/dist/modules/time.js.map +1 -0
  68. package/dist/modules/train.d.ts +23 -0
  69. package/dist/modules/train.js +308 -0
  70. package/dist/modules/train.js.map +1 -0
  71. package/dist/modules/validate.d.ts +23 -0
  72. package/dist/modules/validate.js +301 -0
  73. package/dist/modules/validate.js.map +1 -0
  74. package/dist/registry.d.ts +140 -0
  75. package/dist/registry.js +3240 -0
  76. package/dist/registry.js.map +1 -0
  77. package/dist/types-I95R8_FN.d.ts +91 -0
  78. 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 };