@almadar/std 1.0.0 → 1.0.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/dist/behaviors/async.d.ts +8 -8
- package/dist/behaviors/async.js +548 -500
- package/dist/behaviors/async.js.map +1 -1
- package/dist/behaviors/data-management.d.ts +11 -19
- package/dist/behaviors/data-management.js +468 -449
- package/dist/behaviors/data-management.js.map +1 -1
- package/dist/behaviors/feedback.d.ts +6 -6
- package/dist/behaviors/feedback.js +312 -278
- package/dist/behaviors/feedback.js.map +1 -1
- package/dist/behaviors/game-core.d.ts +11 -12
- package/dist/behaviors/game-core.js +357 -406
- package/dist/behaviors/game-core.js.map +1 -1
- package/dist/behaviors/game-entity.d.ts +13 -14
- package/dist/behaviors/game-entity.js +622 -592
- package/dist/behaviors/game-entity.js.map +1 -1
- package/dist/behaviors/game-ui.d.ts +9 -10
- package/dist/behaviors/game-ui.js +522 -459
- package/dist/behaviors/game-ui.js.map +1 -1
- package/dist/behaviors/index.d.ts +3 -3
- package/dist/behaviors/index.js +3876 -3843
- package/dist/behaviors/index.js.map +1 -1
- package/dist/behaviors/registry.d.ts +14 -24
- package/dist/behaviors/registry.js +3868 -3803
- package/dist/behaviors/registry.js.map +1 -1
- package/dist/behaviors/types.d.ts +14 -138
- package/dist/behaviors/types.js +10 -47
- package/dist/behaviors/types.js.map +1 -1
- package/dist/behaviors/ui-interaction.d.ts +13 -20
- package/dist/behaviors/ui-interaction.js +961 -1043
- package/dist/behaviors/ui-interaction.js.map +1 -1
- package/dist/index.d.ts +44 -11
- package/dist/index.js +3913 -3870
- package/dist/index.js.map +1 -1
- package/dist/modules/index.js +11 -0
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/str.js +11 -0
- package/dist/modules/str.js.map +1 -1
- package/dist/registry.js +11 -0
- package/dist/registry.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +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"]}
|
|
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 * Each behavior is a self-contained OrbitalSchema that can function as a standalone .orb file.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from './types.js';\n\n// ============================================================================\n// std-notification - Toast Notifications\n// ============================================================================\n\nexport const NOTIFICATION_BEHAVIOR: OrbitalSchema = {\n name: 'std-notification',\n version: '1.0.0',\n description: 'Toast notification with auto-dismiss',\n orbitals: [\n {\n name: 'NotificationOrbital',\n entity: {\n name: 'NotificationState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'notifications', type: 'array', default: [] },\n { name: 'currentId', type: 'number', default: 0 },\n { name: 'autoDismissMs', type: 'number', default: 5000 },\n ],\n },\n traits: [\n {\n name: 'Notification',\n linkedEntity: 'NotificationState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Hidden', isInitial: true },\n { name: 'Visible' },\n { name: 'Dismissing' },\n ],\n events: [\n { key: 'SHOW', name: 'Show' },\n { key: 'HIDE', name: 'Hide' },\n { key: 'DISMISS', name: 'Dismiss' },\n { key: 'AUTO_DISMISS', name: 'Auto Dismiss' },\n ],\n transitions: [\n {\n from: 'Hidden',\n to: 'Visible',\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', ['>', '@entity.autoDismissMs', 0],\n ['async/delay', '@entity.autoDismissMs', ['emit', 'AUTO_DISMISS', { id: '@id' }]]]]],\n ],\n },\n {\n from: 'Visible',\n to: 'Visible',\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', ['>', '@entity.autoDismissMs', 0],\n ['async/delay', '@entity.autoDismissMs', ['emit', 'AUTO_DISMISS', { id: '@id' }]]]]],\n ],\n },\n {\n from: 'Visible',\n to: 'Visible',\n event: 'DISMISS',\n effects: [\n ['set', '@entity.notifications',\n ['array/filter', '@entity.notifications', ['fn', 'n', ['!=', '@n.id', '@payload.id']]]],\n ],\n },\n {\n from: 'Visible',\n to: 'Visible',\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 from: 'Visible',\n to: 'Hidden',\n event: 'HIDE',\n effects: [['set', '@entity.notifications', []]],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-confirmation - Confirmation Dialog\n// ============================================================================\n\nexport const CONFIRMATION_BEHAVIOR: OrbitalSchema = {\n name: 'std-confirmation',\n version: '1.0.0',\n description: 'Confirmation dialog with confirm/cancel actions',\n orbitals: [\n {\n name: 'ConfirmationOrbital',\n entity: {\n name: 'ConfirmationState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'title', type: 'string', default: '' },\n { name: 'message', type: 'string', default: '' },\n { name: 'pendingAction', type: 'object', default: null },\n { name: 'confirmLabel', type: 'string', default: 'Confirm' },\n { name: 'cancelLabel', type: 'string', default: 'Cancel' },\n { name: 'confirmVariant', type: 'string', default: 'danger' },\n ],\n },\n traits: [\n {\n name: 'Confirmation',\n linkedEntity: 'ConfirmationState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Closed', isInitial: true },\n { name: 'Open' },\n ],\n events: [\n { key: 'REQUEST', name: 'Request' },\n { key: 'CONFIRM', name: 'Confirm' },\n { key: 'CANCEL', name: '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: 'confirm-dialog',\n isOpen: true,\n onClose: 'CANCEL',\n onConfirm: 'CONFIRM',\n title: '@entity.title',\n message: '@entity.message',\n confirmText: '@entity.confirmLabel',\n cancelText: '@entity.cancelLabel',\n variant: '@entity.confirmVariant',\n }],\n ],\n },\n {\n from: 'Open',\n to: 'Closed',\n event: 'CONFIRM',\n effects: [\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: [['set', '@entity.pendingAction', null]],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-undo - Undo Stack\n// ============================================================================\n\nexport const UNDO_BEHAVIOR: OrbitalSchema = {\n name: 'std-undo',\n version: '1.0.0',\n description: 'Undo/redo stack for reversible actions',\n orbitals: [\n {\n name: 'UndoOrbital',\n entity: {\n name: 'UndoState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'undoStack', type: 'array', default: [] },\n { name: 'redoStack', type: 'array', default: [] },\n { name: 'maxHistory', type: 'number', default: 50 },\n { name: 'showToast', type: 'boolean', default: true },\n ],\n },\n traits: [\n {\n name: 'Undo',\n linkedEntity: 'UndoState',\n category: 'interaction',\n stateMachine: {\n states: [{ name: 'Ready', isInitial: true }],\n events: [\n { key: 'PUSH', name: 'Push' },\n { key: 'UNDO', name: 'Undo' },\n { key: 'REDO', name: 'Redo' },\n { key: 'CLEAR', name: 'Clear' },\n ],\n transitions: [\n {\n from: 'Ready',\n to: 'Ready',\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, '@entity.maxHistory']],\n ['set', '@entity.redoStack', []],\n ['when', '@entity.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 from: 'Ready',\n to: 'Ready',\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 from: 'Ready',\n to: 'Ready',\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 from: 'Ready',\n to: 'Ready',\n event: 'CLEAR',\n effects: [\n ['set', '@entity.undoStack', []],\n ['set', '@entity.redoStack', []],\n ],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// Export All Feedback Behaviors\n// ============================================================================\n\nexport const FEEDBACK_BEHAVIORS: OrbitalSchema[] = [\n NOTIFICATION_BEHAVIOR,\n CONFIRMATION_BEHAVIOR,\n UNDO_BEHAVIOR,\n];\n"]}
|
|
@@ -1,40 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import '@almadar/core/types';
|
|
1
|
+
import { OrbitalSchema } from '@almadar/core/types';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Game Core Behaviors
|
|
6
5
|
*
|
|
7
6
|
* Foundation behaviors for game systems: loop, physics, input, collision.
|
|
8
|
-
*
|
|
7
|
+
* Each behavior is a self-contained OrbitalSchema that can function as a standalone .orb file.
|
|
9
8
|
*
|
|
10
9
|
* @packageDocumentation
|
|
11
10
|
*/
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
|
-
* std
|
|
13
|
+
* std-gameloop - Coordinates game tick execution at 60fps.
|
|
15
14
|
*
|
|
16
15
|
* States: Running, Paused
|
|
17
16
|
* Provides the master clock for all game systems.
|
|
18
17
|
*/
|
|
19
|
-
declare const GAME_LOOP_BEHAVIOR:
|
|
18
|
+
declare const GAME_LOOP_BEHAVIOR: OrbitalSchema;
|
|
20
19
|
/**
|
|
21
|
-
* std
|
|
20
|
+
* std-physics2d - 2D physics with gravity, velocity, and friction.
|
|
22
21
|
*
|
|
23
22
|
* Applied to entities that need physics simulation.
|
|
24
23
|
*/
|
|
25
|
-
declare const PHYSICS_2D_BEHAVIOR:
|
|
24
|
+
declare const PHYSICS_2D_BEHAVIOR: OrbitalSchema;
|
|
26
25
|
/**
|
|
27
|
-
* std
|
|
26
|
+
* std-input - Manages keyboard and touch input state.
|
|
28
27
|
*
|
|
29
28
|
* Singleton behavior that tracks all input state.
|
|
30
29
|
*/
|
|
31
|
-
declare const INPUT_BEHAVIOR:
|
|
30
|
+
declare const INPUT_BEHAVIOR: OrbitalSchema;
|
|
32
31
|
/**
|
|
33
|
-
* std
|
|
32
|
+
* std-collision - Handles collision detection and response.
|
|
34
33
|
*
|
|
35
34
|
* Configures how an entity responds to collisions.
|
|
36
35
|
*/
|
|
37
|
-
declare const COLLISION_BEHAVIOR:
|
|
38
|
-
declare const GAME_CORE_BEHAVIORS:
|
|
36
|
+
declare const COLLISION_BEHAVIOR: OrbitalSchema;
|
|
37
|
+
declare const GAME_CORE_BEHAVIORS: OrbitalSchema[];
|
|
39
38
|
|
|
40
39
|
export { COLLISION_BEHAVIOR, GAME_CORE_BEHAVIORS, GAME_LOOP_BEHAVIOR, INPUT_BEHAVIOR, PHYSICS_2D_BEHAVIOR };
|