@almadar/std 16.234.0 → 16.236.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/behaviors/behaviors-registry.json +4402 -1898
- package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +25 -41
- package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +0 -24
- package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +1 -17
- package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +17 -24
- package/behaviors/lolo/infra/atoms/std-data-import.lolo +8 -11
- package/behaviors/lolo/infra/atoms/std-game-clock.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-knowledge-loop.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +3 -1
- package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
- package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +20 -11
- package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +23 -11
- package/behaviors/lolo/infra/atoms/std-rate-limiter.lolo +84 -22
- package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -6
- package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +3 -1
- package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +0 -4
- package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +0 -4
- package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +12 -0
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +55 -9
- package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +6 -2
- package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +19 -14
- package/behaviors/lolo/ui/core/atoms/std-board.lolo +77 -27
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +44 -28
- package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +7 -3
- package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +25 -13
- package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +5 -0
- package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +0 -5
- package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
- package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +7 -3
- package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
- package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +20 -4
- package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
- package/behaviors/lolo/ui/core/atoms/std-list.lolo +46 -32
- package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
- package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
- package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +16 -12
- package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +10 -1
- package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
- package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +78 -16
- package/behaviors/lolo/ui/core/atoms/std-selection.lolo +15 -10
- package/behaviors/lolo/ui/core/atoms/std-stats.lolo +5 -5
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -0
- package/behaviors/lolo/ui/core/atoms/std-thread.lolo +41 -73
- package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +20 -11
- package/behaviors/lolo/ui/core/atoms/std-vote.lolo +0 -4
- package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
- package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +21 -0
- package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +11 -1
- package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +13 -8
- package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +7 -2
- package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +2 -2
- package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +8 -0
- package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -9
- package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +8 -3
- package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +13 -0
- package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +5 -0
- package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +11 -1
- package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +44 -15
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
- package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +66 -12
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +9 -3
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +9 -3
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +18 -9
- package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +55 -10
- package/behaviors/lolo/ui/core/organisms/ui-form.lolo +55 -10
- package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +8 -3
- package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
- package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +8 -3
- package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +2 -44
- package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +6 -1
- package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +8 -2
- package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +2 -66
- package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +6 -6
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/factory-signatures.json +1 -1
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +124 -67
- package/behaviors/registry/infra/atoms/std-audit-capture.orb +0 -8
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +0 -84
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -44
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +124 -55
- package/behaviors/registry/infra/atoms/std-data-import.orb +12 -11
- package/behaviors/registry/infra/atoms/std-game-clock.orb +31 -0
- package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +0 -57
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +43 -0
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
- package/behaviors/registry/infra/atoms/std-notification-preferences.orb +126 -12
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
- package/behaviors/registry/infra/atoms/std-permission-matrix.orb +128 -12
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +287 -72
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +5 -8
- package/behaviors/registry/ml/atoms/std-graph-builder.orb +11 -0
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +0 -7
- package/behaviors/registry/ml/atoms/std-ml-similarity.orb +0 -7
- package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +82 -0
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +417 -9
- package/behaviors/registry/ui/core/atoms/std-app-search.orb +53 -1
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +209 -19
- package/behaviors/registry/ui/core/atoms/std-board.orb +242 -61
- package/behaviors/registry/ui/core/atoms/std-browse.orb +295 -41
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +96 -2
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +122 -15
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +11 -0
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +0 -8
- package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +109 -2
- package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
- package/behaviors/registry/ui/core/atoms/std-geosearch.orb +5 -0
- package/behaviors/registry/ui/core/atoms/std-graphs.orb +173 -66
- package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
- package/behaviors/registry/ui/core/atoms/std-list.orb +226 -34
- package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
- package/behaviors/registry/ui/core/atoms/std-record-detail.orb +204 -11
- package/behaviors/registry/ui/core/atoms/std-recurrence.orb +89 -4
- package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +419 -19
- package/behaviors/registry/ui/core/atoms/std-selection.orb +140 -10
- package/behaviors/registry/ui/core/atoms/std-stats.orb +73 -1
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +3 -0
- package/behaviors/registry/ui/core/atoms/std-thread.orb +190 -115
- package/behaviors/registry/ui/core/atoms/std-version-history.orb +127 -13
- package/behaviors/registry/ui/core/atoms/std-vote.orb +0 -9
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +33 -3
- package/behaviors/registry/ui/core/atoms/ui-presence.orb +59 -0
- package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-chart.orb +68 -1
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +291 -8
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +87 -2
- package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +3 -2
- package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +32 -0
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +81 -24
- package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +121 -3
- package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +40 -0
- package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +57 -1
- package/behaviors/registry/ui/core/molecules/ui-meter.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-modal.orb +8 -0
- package/behaviors/registry/ui/core/molecules/ui-page-header.orb +60 -1
- package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +393 -23
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +282 -20
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +130 -3
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +130 -3
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +367 -9
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +104 -13
- package/behaviors/registry/ui/core/organisms/ui-form.orb +104 -13
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +121 -3
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +121 -3
- package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -172
- package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -1
- package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +99 -2
- package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -0
- package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +0 -7
- package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -807
- package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +0 -7
- package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +0 -7
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +6 -0
- package/canonical-operators.json +18 -1
- package/dist/behaviors/exports-reader.js +7662 -3762
- package/dist/behaviors/functions/index.d.ts +309 -104
- package/dist/behaviors/functions/index.js +7651 -3762
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +7663 -3763
- package/dist/behaviors/query.js +7662 -3762
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +35 -27
- package/dist/behaviors-registry.json +4402 -1898
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7697 -3763
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +612 -352
- package/dist/modules/anim.d.ts +1 -1
- package/dist/modules/array.d.ts +1 -1
- package/dist/modules/array.js +15 -0
- package/dist/modules/async.d.ts +1 -1
- package/dist/modules/async.js +9 -0
- package/dist/modules/behavior.d.ts +1 -1
- package/dist/modules/browser.d.ts +1 -1
- package/dist/modules/composition.d.ts +1 -1
- package/dist/modules/contract.d.ts +1 -1
- package/dist/modules/core.d.ts +1 -1
- package/dist/modules/core.js +10 -0
- package/dist/modules/data.d.ts +1 -1
- package/dist/modules/ease.d.ts +1 -1
- package/dist/modules/format.d.ts +1 -1
- package/dist/modules/geo.d.ts +1 -1
- package/dist/modules/graph.d.ts +1 -1
- package/dist/modules/grid.d.ts +1 -1
- package/dist/modules/index.d.ts +1 -1
- package/dist/modules/index.js +34 -0
- package/dist/modules/integration.d.ts +1 -1
- package/dist/modules/json.d.ts +1 -1
- package/dist/modules/llm.d.ts +1 -1
- package/dist/modules/math.d.ts +1 -1
- package/dist/modules/memory.d.ts +1 -1
- package/dist/modules/nn.d.ts +1 -1
- package/dist/modules/noise.d.ts +1 -1
- package/dist/modules/object.d.ts +1 -1
- package/dist/modules/os.d.ts +1 -1
- package/dist/modules/path.d.ts +1 -1
- package/dist/modules/prob.d.ts +1 -1
- package/dist/modules/session.d.ts +1 -1
- package/dist/modules/str.d.ts +1 -1
- package/dist/modules/tensor.d.ts +1 -1
- package/dist/modules/time.d.ts +1 -1
- package/dist/modules/trace.d.ts +1 -1
- package/dist/modules/train.d.ts +1 -1
- package/dist/modules/validate.d.ts +1 -1
- package/dist/modules/vector.d.ts +1 -1
- package/dist/modules/workspace.d.ts +1 -1
- package/dist/registry/factory-signatures.json +1 -1
- package/dist/registry.d.ts +5 -2
- package/dist/registry.js +55 -1
- package/dist/{types-DwAW4Nni.d.ts → types-DLx38UFZ.d.ts} +31 -4
- package/package.json +2 -2
|
@@ -2,7 +2,7 @@ app ui-form-section "1.0.0"
|
|
|
2
2
|
"FormSection — UI factory (1:1 with the @almadar/ui form-section pattern)."
|
|
3
3
|
;; @pattern "form-section"
|
|
4
4
|
orbital FormSectionOrbital {
|
|
5
|
-
type FormSectionLoaded = Event { data :
|
|
5
|
+
type FormSectionLoaded = Event { data : FormSectionItem } "FormSection row finished loading; payload.data holds the single row"
|
|
6
6
|
type FormSectionFieldsItem = {
|
|
7
7
|
name : string
|
|
8
8
|
field : string
|
|
@@ -138,11 +138,45 @@ orbital FormSectionOrbital {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
trait FormSectionRender -> @rebindable FormSectionItem [interaction, instance] {
|
|
141
|
-
initial:
|
|
141
|
+
initial: resolving
|
|
142
142
|
|
|
143
|
-
state
|
|
144
|
-
INIT -> idle when @config.selfFetch
|
|
145
|
-
(fetch FormSectionItem { emit: { success: FormSectionLoaded } })
|
|
143
|
+
state resolving {
|
|
144
|
+
INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create"))
|
|
145
|
+
(fetch FormSectionItem { id: ?id, emit: { success: FormSectionLoaded } })
|
|
146
|
+
(render-ui main {
|
|
147
|
+
children: @config.children
|
|
148
|
+
onSubmit: @config.onSubmit
|
|
149
|
+
onCancel: @config.onCancel
|
|
150
|
+
layout: @config.layout
|
|
151
|
+
gap: @config.gap
|
|
152
|
+
className: @config.className
|
|
153
|
+
entity: @entity
|
|
154
|
+
mode: @config.mode
|
|
155
|
+
fields: @config.fields
|
|
156
|
+
initialData: @entity
|
|
157
|
+
isLoading: @config.isLoading
|
|
158
|
+
error: @config.error
|
|
159
|
+
submitLabel: @config.submitLabel
|
|
160
|
+
cancelLabel: @config.cancelLabel
|
|
161
|
+
showCancel: @config.showCancel
|
|
162
|
+
showSubmit: @config.showSubmit
|
|
163
|
+
title: @config.title
|
|
164
|
+
submitEvent: @config.submitEvent
|
|
165
|
+
cancelEvent: @config.cancelEvent
|
|
166
|
+
relationsData: @config.relationsData
|
|
167
|
+
relationsLoading: @config.relationsLoading
|
|
168
|
+
fieldOverrides: @config.fieldOverrides
|
|
169
|
+
conditionalFields: @config.conditionalFields
|
|
170
|
+
hiddenCalculations: @config.hiddenCalculations
|
|
171
|
+
violationTriggers: @config.violationTriggers
|
|
172
|
+
evaluationContext: @config.evaluationContext
|
|
173
|
+
sections: @config.sections
|
|
174
|
+
onFieldChange: @config.onFieldChange
|
|
175
|
+
configPath: @config.configPath
|
|
176
|
+
repeatable: @config.repeatable
|
|
177
|
+
type: form-section
|
|
178
|
+
})
|
|
179
|
+
INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create")))
|
|
146
180
|
(render-ui main {
|
|
147
181
|
children: @config.children
|
|
148
182
|
onSubmit: @config.onSubmit
|
|
@@ -176,7 +210,10 @@ orbital FormSectionOrbital {
|
|
|
176
210
|
repeatable: @config.repeatable
|
|
177
211
|
type: form-section
|
|
178
212
|
})
|
|
179
|
-
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
state idle {
|
|
216
|
+
INIT -> idle
|
|
180
217
|
(render-ui main {
|
|
181
218
|
children: @config.children
|
|
182
219
|
onSubmit: @config.onSubmit
|
|
@@ -218,7 +255,7 @@ orbital FormSectionOrbital {
|
|
|
218
255
|
layout: @config.layout
|
|
219
256
|
gap: @config.gap
|
|
220
257
|
className: @config.className
|
|
221
|
-
entity: @
|
|
258
|
+
entity: @entity
|
|
222
259
|
mode: @config.mode
|
|
223
260
|
fields: @config.fields
|
|
224
261
|
initialData: @payload.data
|
|
@@ -261,11 +298,19 @@ orbital FormSectionOrbital {
|
|
|
261
298
|
@description "Callback when any field value changes"
|
|
262
299
|
@tier "essential"
|
|
263
300
|
FormSectionLoaded
|
|
264
|
-
@description "FormSection
|
|
301
|
+
@description "FormSection row finished loading; payload.data holds the single row."
|
|
265
302
|
@synonyms "loaded, fetched, retrieved"
|
|
266
303
|
@tier "essential"
|
|
267
304
|
}
|
|
268
305
|
|
|
306
|
+
listens {
|
|
307
|
+
INIT {
|
|
308
|
+
id : string
|
|
309
|
+
}
|
|
310
|
+
@description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
|
|
311
|
+
@tier "internal"
|
|
312
|
+
}
|
|
313
|
+
|
|
269
314
|
config {
|
|
270
315
|
children : node
|
|
271
316
|
@label "Children"
|
|
@@ -380,8 +425,8 @@ orbital FormSectionOrbital {
|
|
|
380
425
|
@description "Whether the form supports repeatable entries"
|
|
381
426
|
@tier "presentation"
|
|
382
427
|
selfFetch : boolean = true
|
|
383
|
-
@label "Fetch its own
|
|
384
|
-
@description "true (default) =
|
|
428
|
+
@label "Fetch its own row on mount?"
|
|
429
|
+
@description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load."
|
|
385
430
|
@tier "internal"
|
|
386
431
|
}
|
|
387
432
|
}
|
|
@@ -2,7 +2,7 @@ app ui-form "1.0.0"
|
|
|
2
2
|
"Form — UI factory (1:1 with the @almadar/ui form pattern)."
|
|
3
3
|
;; @pattern "form"
|
|
4
4
|
orbital FormOrbital {
|
|
5
|
-
type FormLoaded = Event { data :
|
|
5
|
+
type FormLoaded = Event { data : FormItem } "Form row finished loading; payload.data holds the single row"
|
|
6
6
|
type FormFieldsItem = {
|
|
7
7
|
name : string
|
|
8
8
|
field : string
|
|
@@ -138,11 +138,45 @@ orbital FormOrbital {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
trait FormRender -> @rebindable FormItem [interaction, instance] {
|
|
141
|
-
initial:
|
|
141
|
+
initial: resolving
|
|
142
142
|
|
|
143
|
-
state
|
|
144
|
-
INIT -> idle when @config.selfFetch
|
|
145
|
-
(fetch FormItem { emit: { success: FormLoaded } })
|
|
143
|
+
state resolving {
|
|
144
|
+
INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create"))
|
|
145
|
+
(fetch FormItem { id: ?id, emit: { success: FormLoaded } })
|
|
146
|
+
(render-ui main {
|
|
147
|
+
children: @config.children
|
|
148
|
+
onSubmit: @config.onSubmit
|
|
149
|
+
onCancel: @config.onCancel
|
|
150
|
+
layout: @config.layout
|
|
151
|
+
gap: @config.gap
|
|
152
|
+
className: @config.className
|
|
153
|
+
entity: @entity
|
|
154
|
+
mode: @config.mode
|
|
155
|
+
fields: @config.fields
|
|
156
|
+
initialData: @entity
|
|
157
|
+
isLoading: @config.isLoading
|
|
158
|
+
error: @config.error
|
|
159
|
+
submitLabel: @config.submitLabel
|
|
160
|
+
cancelLabel: @config.cancelLabel
|
|
161
|
+
showCancel: @config.showCancel
|
|
162
|
+
showSubmit: @config.showSubmit
|
|
163
|
+
title: @config.title
|
|
164
|
+
submitEvent: @config.submitEvent
|
|
165
|
+
cancelEvent: @config.cancelEvent
|
|
166
|
+
relationsData: @config.relationsData
|
|
167
|
+
relationsLoading: @config.relationsLoading
|
|
168
|
+
fieldOverrides: @config.fieldOverrides
|
|
169
|
+
conditionalFields: @config.conditionalFields
|
|
170
|
+
hiddenCalculations: @config.hiddenCalculations
|
|
171
|
+
violationTriggers: @config.violationTriggers
|
|
172
|
+
evaluationContext: @config.evaluationContext
|
|
173
|
+
sections: @config.sections
|
|
174
|
+
onFieldChange: @config.onFieldChange
|
|
175
|
+
configPath: @config.configPath
|
|
176
|
+
repeatable: @config.repeatable
|
|
177
|
+
type: form
|
|
178
|
+
})
|
|
179
|
+
INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create")))
|
|
146
180
|
(render-ui main {
|
|
147
181
|
children: @config.children
|
|
148
182
|
onSubmit: @config.onSubmit
|
|
@@ -176,7 +210,10 @@ orbital FormOrbital {
|
|
|
176
210
|
repeatable: @config.repeatable
|
|
177
211
|
type: form
|
|
178
212
|
})
|
|
179
|
-
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
state idle {
|
|
216
|
+
INIT -> idle
|
|
180
217
|
(render-ui main {
|
|
181
218
|
children: @config.children
|
|
182
219
|
onSubmit: @config.onSubmit
|
|
@@ -218,7 +255,7 @@ orbital FormOrbital {
|
|
|
218
255
|
layout: @config.layout
|
|
219
256
|
gap: @config.gap
|
|
220
257
|
className: @config.className
|
|
221
|
-
entity: @
|
|
258
|
+
entity: @entity
|
|
222
259
|
mode: @config.mode
|
|
223
260
|
fields: @config.fields
|
|
224
261
|
initialData: @payload.data
|
|
@@ -261,11 +298,19 @@ orbital FormOrbital {
|
|
|
261
298
|
@description "Callback when any field value changes"
|
|
262
299
|
@tier "essential"
|
|
263
300
|
FormLoaded
|
|
264
|
-
@description "Form
|
|
301
|
+
@description "Form row finished loading; payload.data holds the single row."
|
|
265
302
|
@synonyms "loaded, fetched, retrieved"
|
|
266
303
|
@tier "essential"
|
|
267
304
|
}
|
|
268
305
|
|
|
306
|
+
listens {
|
|
307
|
+
INIT {
|
|
308
|
+
id : string
|
|
309
|
+
}
|
|
310
|
+
@description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
|
|
311
|
+
@tier "internal"
|
|
312
|
+
}
|
|
313
|
+
|
|
269
314
|
config {
|
|
270
315
|
children : node
|
|
271
316
|
@label "Children"
|
|
@@ -380,8 +425,8 @@ orbital FormOrbital {
|
|
|
380
425
|
@description "Whether the form supports repeatable entries"
|
|
381
426
|
@tier "presentation"
|
|
382
427
|
selfFetch : boolean = true
|
|
383
|
-
@label "Fetch its own
|
|
384
|
-
@description "true (default) =
|
|
428
|
+
@label "Fetch its own row on mount?"
|
|
429
|
+
@description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load."
|
|
385
430
|
@tier "internal"
|
|
386
431
|
}
|
|
387
432
|
}
|
|
@@ -23,6 +23,7 @@ orbital MediaGalleryOrbital {
|
|
|
23
23
|
event : event
|
|
24
24
|
navigatesTo : string
|
|
25
25
|
variant : "primary" | "secondary" | "ghost"
|
|
26
|
+
roles : [string]
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
entity MediaGalleryItem [runtime] {
|
|
@@ -55,7 +56,7 @@ orbital MediaGalleryOrbital {
|
|
|
55
56
|
selectedItems: @config.selectedItems
|
|
56
57
|
selectionEvent: @config.selectionEvent
|
|
57
58
|
showUpload: @config.showUpload
|
|
58
|
-
actions: @config.actions
|
|
59
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
59
60
|
aspectRatio: @config.aspectRatio
|
|
60
61
|
type: media-gallery
|
|
61
62
|
})
|
|
@@ -80,7 +81,7 @@ orbital MediaGalleryOrbital {
|
|
|
80
81
|
selectedItems: @config.selectedItems
|
|
81
82
|
selectionEvent: @config.selectionEvent
|
|
82
83
|
showUpload: @config.showUpload
|
|
83
|
-
actions: @config.actions
|
|
84
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
84
85
|
aspectRatio: @config.aspectRatio
|
|
85
86
|
type: media-gallery
|
|
86
87
|
})
|
|
@@ -105,7 +106,7 @@ orbital MediaGalleryOrbital {
|
|
|
105
106
|
selectedItems: @config.selectedItems
|
|
106
107
|
selectionEvent: @config.selectionEvent
|
|
107
108
|
showUpload: @config.showUpload
|
|
108
|
-
actions: @config.actions
|
|
109
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
109
110
|
aspectRatio: @config.aspectRatio
|
|
110
111
|
type: media-gallery
|
|
111
112
|
})
|
|
@@ -205,6 +206,10 @@ orbital MediaGalleryOrbital {
|
|
|
205
206
|
@label "Aspect Ratio"
|
|
206
207
|
@description "Aspect ratio for thumbnails"
|
|
207
208
|
@tier "presentation"
|
|
209
|
+
viewerRole : string = ""
|
|
210
|
+
@label "Viewer's role"
|
|
211
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
212
|
+
@tier "policy"
|
|
208
213
|
selfFetch : boolean = true
|
|
209
214
|
@label "Fetch its own rows on mount?"
|
|
210
215
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -33,6 +33,12 @@ orbital StateMachineViewOrbital {
|
|
|
33
33
|
code : string
|
|
34
34
|
stack : string
|
|
35
35
|
}
|
|
36
|
+
type StateMachineViewTRANSITIONCLICKTransition = {
|
|
37
|
+
index : number!
|
|
38
|
+
event : string!
|
|
39
|
+
from : string!
|
|
40
|
+
to : string!
|
|
41
|
+
}
|
|
36
42
|
|
|
37
43
|
entity StateMachineViewItem [runtime] {
|
|
38
44
|
id : string!
|
|
@@ -49,6 +55,7 @@ orbital StateMachineViewOrbital {
|
|
|
49
55
|
visitedStates: @config.visitedStates
|
|
50
56
|
stateClickEvent: @config.stateClickEvent
|
|
51
57
|
transitionClickEvent: @config.transitionClickEvent
|
|
58
|
+
onTransitionClick: @config.onTransitionClick
|
|
52
59
|
selectedState: @config.selectedState
|
|
53
60
|
pendingSourceState: @config.pendingSourceState
|
|
54
61
|
nodeShape: @config.nodeShape
|
|
@@ -74,6 +81,7 @@ orbital StateMachineViewOrbital {
|
|
|
74
81
|
event : string!
|
|
75
82
|
from : string!
|
|
76
83
|
to : string!
|
|
84
|
+
transition : StateMachineViewTRANSITIONCLICKTransition
|
|
77
85
|
}
|
|
78
86
|
@description "Emits UI:{transitionClickEvent} with { index, event, from, to } when a transition label is clicked."
|
|
79
87
|
@tier "essential"
|
|
@@ -100,6 +108,10 @@ orbital StateMachineViewOrbital {
|
|
|
100
108
|
@label "Transition Click Event"
|
|
101
109
|
@description "Emits UI:{transitionClickEvent} with { index, event, from, to } when a transition label is clicked."
|
|
102
110
|
@tier "presentation"
|
|
111
|
+
onTransitionClick : event = "TRANSITION_CLICK"
|
|
112
|
+
@label "On Transition Click"
|
|
113
|
+
@description "Direct transition-click callback, for React hosts (e.g. a canvas node)."
|
|
114
|
+
@tier "presentation"
|
|
103
115
|
selectedState : string
|
|
104
116
|
@label "Selected State"
|
|
105
117
|
@description "State picked in an editor (first click)."
|
|
@@ -23,6 +23,7 @@ orbital TimelineOrbital {
|
|
|
23
23
|
event : event
|
|
24
24
|
navigatesTo : string
|
|
25
25
|
variant : "primary" | "secondary" | "ghost"
|
|
26
|
+
roles : [string]
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
entity TimelineItem [runtime] {
|
|
@@ -43,7 +44,7 @@ orbital TimelineOrbital {
|
|
|
43
44
|
title: @config.title
|
|
44
45
|
items: @config.items
|
|
45
46
|
fields: @config.fields
|
|
46
|
-
itemActions: @config.itemActions
|
|
47
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
47
48
|
look: @config.look
|
|
48
49
|
type: timeline
|
|
49
50
|
})
|
|
@@ -56,7 +57,7 @@ orbital TimelineOrbital {
|
|
|
56
57
|
title: @config.title
|
|
57
58
|
items: @config.items
|
|
58
59
|
fields: @config.fields
|
|
59
|
-
itemActions: @config.itemActions
|
|
60
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
60
61
|
look: @config.look
|
|
61
62
|
type: timeline
|
|
62
63
|
})
|
|
@@ -69,7 +70,7 @@ orbital TimelineOrbital {
|
|
|
69
70
|
title: @config.title
|
|
70
71
|
items: @config.items
|
|
71
72
|
fields: @config.fields
|
|
72
|
-
itemActions: @config.itemActions
|
|
73
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
73
74
|
look: @config.look
|
|
74
75
|
type: timeline
|
|
75
76
|
})
|
|
@@ -121,6 +122,10 @@ orbital TimelineOrbital {
|
|
|
121
122
|
@label "Look"
|
|
122
123
|
@description "Layer 2 visual treatment."
|
|
123
124
|
@tier "presentation"
|
|
125
|
+
viewerRole : string = ""
|
|
126
|
+
@label "Viewer's role"
|
|
127
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
128
|
+
@tier "policy"
|
|
124
129
|
selfFetch : boolean = true
|
|
125
130
|
@label "Fetch its own rows on mount?"
|
|
126
131
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -2,8 +2,6 @@ app ui-counter-template "1.0.0"
|
|
|
2
2
|
"CounterTemplate — UI factory (1:1 with the @almadar/ui counter-template pattern)."
|
|
3
3
|
;; @pattern "counter-template"
|
|
4
4
|
orbital CounterTemplateOrbital {
|
|
5
|
-
type CounterTemplateLoaded = Event { data : [CounterTemplateItem] } "CounterTemplate rows finished loading; payload.data holds the collection"
|
|
6
|
-
|
|
7
5
|
entity CounterTemplateItem [runtime] {
|
|
8
6
|
id : string!
|
|
9
7
|
count : number = 1
|
|
@@ -18,24 +16,8 @@ orbital CounterTemplateOrbital {
|
|
|
18
16
|
initial: idle
|
|
19
17
|
|
|
20
18
|
state idle {
|
|
21
|
-
INIT -> idle
|
|
22
|
-
(fetch CounterTemplateItem {
|
|
23
|
-
(render-ui main {
|
|
24
|
-
entity: @entity
|
|
25
|
-
className: @config.className
|
|
26
|
-
onIncrement: @config.onIncrement
|
|
27
|
-
onDecrement: @config.onDecrement
|
|
28
|
-
onReset: @config.onReset
|
|
29
|
-
incrementEvent: @config.incrementEvent
|
|
30
|
-
decrementEvent: @config.decrementEvent
|
|
31
|
-
resetEvent: @config.resetEvent
|
|
32
|
-
title: @config.title
|
|
33
|
-
showReset: @config.showReset
|
|
34
|
-
size: @config.size
|
|
35
|
-
variant: @config.variant
|
|
36
|
-
type: counter-template
|
|
37
|
-
})
|
|
38
|
-
INIT -> idle when (not @config.selfFetch)
|
|
19
|
+
INIT -> idle
|
|
20
|
+
(fetch CounterTemplateItem {})
|
|
39
21
|
(render-ui main {
|
|
40
22
|
entity: @entity
|
|
41
23
|
className: @config.className
|
|
@@ -51,22 +33,6 @@ orbital CounterTemplateOrbital {
|
|
|
51
33
|
variant: @config.variant
|
|
52
34
|
type: counter-template
|
|
53
35
|
})
|
|
54
|
-
CounterTemplateLoaded -> idle
|
|
55
|
-
(render-ui main {
|
|
56
|
-
entity: @payload.data
|
|
57
|
-
className: @config.className
|
|
58
|
-
onIncrement: @config.onIncrement
|
|
59
|
-
onDecrement: @config.onDecrement
|
|
60
|
-
onReset: @config.onReset
|
|
61
|
-
incrementEvent: @config.incrementEvent
|
|
62
|
-
decrementEvent: @config.decrementEvent
|
|
63
|
-
resetEvent: @config.resetEvent
|
|
64
|
-
title: @config.title
|
|
65
|
-
showReset: @config.showReset
|
|
66
|
-
size: @config.size
|
|
67
|
-
variant: @config.variant
|
|
68
|
-
type: counter-template
|
|
69
|
-
})
|
|
70
36
|
}
|
|
71
37
|
|
|
72
38
|
emits {
|
|
@@ -79,10 +45,6 @@ orbital CounterTemplateOrbital {
|
|
|
79
45
|
@config.onReset -> external { }
|
|
80
46
|
@description "Called when reset is clicked"
|
|
81
47
|
@tier "essential"
|
|
82
|
-
CounterTemplateLoaded
|
|
83
|
-
@description "CounterTemplate rows finished loading; payload.data holds the collection."
|
|
84
|
-
@synonyms "loaded, fetched, retrieved"
|
|
85
|
-
@tier "essential"
|
|
86
48
|
}
|
|
87
49
|
|
|
88
50
|
config {
|
|
@@ -130,10 +92,6 @@ orbital CounterTemplateOrbital {
|
|
|
130
92
|
@label "Variant"
|
|
131
93
|
@description "Template variant"
|
|
132
94
|
@tier "presentation"
|
|
133
|
-
selfFetch : boolean = true
|
|
134
|
-
@label "Fetch its own rows on mount?"
|
|
135
|
-
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
136
|
-
@tier "internal"
|
|
137
95
|
}
|
|
138
96
|
}
|
|
139
97
|
|
|
@@ -21,6 +21,7 @@ orbital DashboardLayoutOrbital {
|
|
|
21
21
|
navigatesTo : string
|
|
22
22
|
badge : string
|
|
23
23
|
variant : "default" | "primary" | "danger"
|
|
24
|
+
roles : [string]
|
|
24
25
|
}
|
|
25
26
|
type DashboardLayoutNotificationsItem = {
|
|
26
27
|
id : string!
|
|
@@ -48,7 +49,7 @@ orbital DashboardLayoutOrbital {
|
|
|
48
49
|
showSearch: @config.showSearch
|
|
49
50
|
searchEvent: @config.searchEvent
|
|
50
51
|
onSearchSubmit: @config.onSearchSubmit
|
|
51
|
-
topBarActions: @config.topBarActions
|
|
52
|
+
topBarActions: (array/filter @config.topBarActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
52
53
|
notifications: @config.notifications
|
|
53
54
|
notificationClickEvent: @config.notificationClickEvent
|
|
54
55
|
onNotificationClick: @config.onNotificationClick
|
|
@@ -159,6 +160,10 @@ orbital DashboardLayoutOrbital {
|
|
|
159
160
|
@label "Children"
|
|
160
161
|
@description "Page content rendered inside the main area"
|
|
161
162
|
@tier "presentation"
|
|
163
|
+
viewerRole : string = ""
|
|
164
|
+
@label "Viewer's role"
|
|
165
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
166
|
+
@tier "policy"
|
|
162
167
|
}
|
|
163
168
|
}
|
|
164
169
|
|
|
@@ -2,8 +2,6 @@ app ui-generic-app-template "1.0.0"
|
|
|
2
2
|
"GenericAppTemplate — UI factory (1:1 with the @almadar/ui generic-app-template pattern)."
|
|
3
3
|
;; @pattern "generic-app-template"
|
|
4
4
|
orbital GenericAppTemplateOrbital {
|
|
5
|
-
type GenericAppTemplateLoaded = Event { data : [GenericAppTemplateItem] } "GenericAppTemplate rows finished loading; payload.data holds the collection"
|
|
6
|
-
|
|
7
5
|
entity GenericAppTemplateItem [runtime] {
|
|
8
6
|
id : string!
|
|
9
7
|
}
|
|
@@ -12,19 +10,8 @@ orbital GenericAppTemplateOrbital {
|
|
|
12
10
|
initial: idle
|
|
13
11
|
|
|
14
12
|
state idle {
|
|
15
|
-
INIT -> idle
|
|
16
|
-
(fetch GenericAppTemplateItem {
|
|
17
|
-
(render-ui main {
|
|
18
|
-
entity: @entity
|
|
19
|
-
className: @config.className
|
|
20
|
-
title: @config.title
|
|
21
|
-
subtitle: @config.subtitle
|
|
22
|
-
children: @config.children
|
|
23
|
-
headerActions: @config.headerActions
|
|
24
|
-
footer: @config.footer
|
|
25
|
-
type: generic-app-template
|
|
26
|
-
})
|
|
27
|
-
INIT -> idle when (not @config.selfFetch)
|
|
13
|
+
INIT -> idle
|
|
14
|
+
(fetch GenericAppTemplateItem {})
|
|
28
15
|
(render-ui main {
|
|
29
16
|
entity: @entity
|
|
30
17
|
className: @config.className
|
|
@@ -35,24 +22,6 @@ orbital GenericAppTemplateOrbital {
|
|
|
35
22
|
footer: @config.footer
|
|
36
23
|
type: generic-app-template
|
|
37
24
|
})
|
|
38
|
-
GenericAppTemplateLoaded -> idle
|
|
39
|
-
(render-ui main {
|
|
40
|
-
entity: @payload.data
|
|
41
|
-
className: @config.className
|
|
42
|
-
title: @config.title
|
|
43
|
-
subtitle: @config.subtitle
|
|
44
|
-
children: @config.children
|
|
45
|
-
headerActions: @config.headerActions
|
|
46
|
-
footer: @config.footer
|
|
47
|
-
type: generic-app-template
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
emits {
|
|
52
|
-
GenericAppTemplateLoaded
|
|
53
|
-
@description "GenericAppTemplate rows finished loading; payload.data holds the collection."
|
|
54
|
-
@synonyms "loaded, fetched, retrieved"
|
|
55
|
-
@tier "essential"
|
|
56
25
|
}
|
|
57
26
|
|
|
58
27
|
config {
|
|
@@ -80,10 +49,6 @@ orbital GenericAppTemplateOrbital {
|
|
|
80
49
|
@label "Footer"
|
|
81
50
|
@description "Footer content"
|
|
82
51
|
@tier "presentation"
|
|
83
|
-
selfFetch : boolean = true
|
|
84
|
-
@label "Fetch its own rows on mount?"
|
|
85
|
-
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
86
|
-
@tier "internal"
|
|
87
52
|
}
|
|
88
53
|
}
|
|
89
54
|
|
|
@@ -10,6 +10,7 @@ orbital GameMenuOrbital {
|
|
|
10
10
|
variant : string
|
|
11
11
|
disabled : boolean
|
|
12
12
|
subLabel : string
|
|
13
|
+
roles : [string]
|
|
13
14
|
}
|
|
14
15
|
type GameMenuMenuItemsItem = {
|
|
15
16
|
id : string
|
|
@@ -19,6 +20,7 @@ orbital GameMenuOrbital {
|
|
|
19
20
|
variant : string
|
|
20
21
|
disabled : boolean
|
|
21
22
|
subLabel : string
|
|
23
|
+
roles : [string]
|
|
22
24
|
}
|
|
23
25
|
type GameMenuLogo = {
|
|
24
26
|
url : asset!
|
|
@@ -56,8 +58,8 @@ orbital GameMenuOrbital {
|
|
|
56
58
|
(render-ui main {
|
|
57
59
|
title: @config.title
|
|
58
60
|
subtitle: @config.subtitle
|
|
59
|
-
options: @config.options
|
|
60
|
-
menuItems: @config.menuItems
|
|
61
|
+
options: (array/filter @config.options (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
62
|
+
menuItems: (array/filter @config.menuItems (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
61
63
|
onSelect: @config.onSelect
|
|
62
64
|
background: @config.background
|
|
63
65
|
logo: @config.logo
|
|
@@ -107,6 +109,10 @@ orbital GameMenuOrbital {
|
|
|
107
109
|
@label "Class Name"
|
|
108
110
|
@description "Additional CSS classes"
|
|
109
111
|
@tier "presentation"
|
|
112
|
+
viewerRole : string = ""
|
|
113
|
+
@label "Viewer's role"
|
|
114
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
115
|
+
@tier "policy"
|
|
110
116
|
}
|
|
111
117
|
}
|
|
112
118
|
|
|
@@ -215,7 +215,7 @@ orbital ArcadeBoard3DFrameOrbital {
|
|
|
215
215
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.6, width: 0.8, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
216
216
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.6, width: (* 0.8 (/ (object/get @u health) (object/get @u maxHealth))), height: 0.12, fill: "#22c55e" })) }
|
|
217
217
|
{ type: draw-text-layer, items: (array/map @entity.units (fn u { type: draw-text, text: (object/get @u name), position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.85, color: "#ffffff" })) }
|
|
218
|
-
{ type: draw-fx-layer, items: @entity.fx, tickMs: 500, presets: @config.fxPresets }
|
|
218
|
+
{ type: draw-fx-layer, items: @entity.fx, tickMs: 500, presets: @config.fxPresets, sprites: (object/get @config.assetManifest effects) }
|
|
219
219
|
] } ]
|
|
220
220
|
})
|
|
221
221
|
|
|
@@ -261,7 +261,7 @@ orbital ArcadeBoard3DFrameOrbital {
|
|
|
261
261
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.6, width: 0.8, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
262
262
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.6, width: (* 0.8 (/ (object/get @u health) (object/get @u maxHealth))), height: 0.12, fill: "#22c55e" })) }
|
|
263
263
|
{ type: draw-text-layer, items: (array/map @entity.units (fn u { type: draw-text, text: (object/get @u name), position: { x: (object/get (object/get @u position) x), y: (object/get (object/get @u position) y), z: (object/get @u z) }, offsetY: -0.85, color: "#ffffff" })) }
|
|
264
|
-
{ type: draw-fx-layer, items: @entity.fx, tickMs: 500, presets: @config.fxPresets }
|
|
264
|
+
{ type: draw-fx-layer, items: @entity.fx, tickMs: 500, presets: @config.fxPresets, sprites: (object/get @config.assetManifest effects) }
|
|
265
265
|
] } ]
|
|
266
266
|
})
|
|
267
267
|
|
|
@@ -299,10 +299,6 @@ orbital CrewBoard2DOrbital {
|
|
|
299
299
|
@label "Show Minimap"
|
|
300
300
|
@description "Whether the canvas draws a minimap."
|
|
301
301
|
@tier "presentation"
|
|
302
|
-
scale : number = 1
|
|
303
|
-
@label "Scale"
|
|
304
|
-
@description "Canvas render scale."
|
|
305
|
-
@tier "presentation"
|
|
306
302
|
backgroundAsset : Asset = {}
|
|
307
303
|
@label "Background Asset"
|
|
308
304
|
@description "Game-shell background panel sprite (theme chrome)."
|