@dreamboard-games/sdk 0.2.1-alpha.0 → 0.3.0-alpha.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/{HandView-ncJIVLhN.d.ts → HandView-PYDmehVD.d.ts} +1 -1
- package/dist/{ResourceCounter-CTREyF73.d.ts → ResourceCounter-BTXklCEZ.d.ts} +1 -1
- package/dist/{ThemeProvider-fy0_QzgO.d.ts → ThemeProvider-DvMl17Ny.d.ts} +1 -1
- package/dist/attributes-BeRyboMS.d.ts +279 -0
- package/dist/browser-interaction.d.ts +708 -0
- package/dist/browser-interaction.js +106 -0
- package/dist/{chunk-KAELH4KC.js → chunk-3RQEICD3.js} +2 -2
- package/dist/{chunk-TDSWKVZ4.js → chunk-ADYH6PVT.js} +2457 -1265
- package/dist/chunk-ADYH6PVT.js.map +1 -0
- package/dist/{chunk-YFY3RL52.js → chunk-P7VMTJ5D.js} +2 -2
- package/dist/{chunk-YFY3RL52.js.map → chunk-P7VMTJ5D.js.map} +1 -1
- package/dist/chunk-QLG6VEMW.js +1691 -0
- package/dist/chunk-QLG6VEMW.js.map +1 -0
- package/dist/{chunk-WYPQ3GG5.js → chunk-QZ6X4B5P.js} +1177 -1106
- package/dist/chunk-QZ6X4B5P.js.map +1 -0
- package/dist/{chunk-GKKBPPSW.js → chunk-TXXLS3OI.js} +405 -309
- package/dist/chunk-TXXLS3OI.js.map +1 -0
- package/dist/{chunk-FDNZTDD6.js → chunk-W6SGFWXH.js} +48 -44
- package/dist/chunk-W6SGFWXH.js.map +1 -0
- package/dist/{chunk-MKXPVOUT.js → chunk-Y2AFYBMB.js} +48 -4
- package/dist/chunk-Y2AFYBMB.js.map +1 -0
- package/dist/{index-BwqPQtBu.d.ts → codegen.d.ts} +57 -565
- package/dist/{infrastructure/workspace-codegen.js → codegen.js} +3 -3
- package/dist/{components-D5ZRE2Hl.d.ts → components-DaIqi9QM.d.ts} +48 -37
- package/dist/{hex-board-view-D_07hO6O.d.ts → hex-board-view-UCUjMALd.d.ts} +3 -2
- package/dist/{infrastructure/reducer-bundle-abi.d.ts → index.d-BGqVifr_.d.ts} +289 -10
- package/dist/index.js +1 -1
- package/dist/package-set.d.ts +2 -2
- package/dist/package-set.js +1 -1
- package/dist/primitive-props-BNHDkgd7.d.ts +16 -0
- package/dist/reducer-contract.d.ts +3 -0
- package/dist/{infrastructure/reducer-bundle-abi.js → reducer-contract.js} +4 -4
- package/dist/reducer.d.ts +185 -179
- package/dist/reducer.js +1637 -1353
- package/dist/reducer.js.map +1 -1
- package/dist/runtime/primitives.d.ts +10 -9
- package/dist/runtime/primitives.js +8 -7
- package/dist/runtime/runtime-api.d.ts +2 -0
- package/dist/runtime/runtime-api.js +1 -0
- package/dist/runtime/workspace-contract.d.ts +63 -17
- package/dist/runtime/workspace-contract.js +5 -5
- package/dist/{runtime-api-DWxvTr-O.d.ts → runtime-api-tGL3ArsB.d.ts} +109 -4
- package/dist/runtime.d.ts +12 -57
- package/dist/runtime.js +487 -7
- package/dist/runtime.js.map +1 -1
- package/dist/testing.d.ts +4 -4
- package/dist/testing.js.map +1 -1
- package/dist/types.d.ts +1531 -85
- package/dist/types.js +1 -3
- package/dist/types.js.map +1 -1
- package/dist/ui/components.d.ts +7 -8
- package/dist/ui/components.js +1 -1
- package/dist/ui/defaults.d.ts +1 -1
- package/dist/ui/{types/player-state.d.ts → player-state.d.ts} +2 -2
- package/dist/{ui-contract-iQfTtUSL.d.ts → ui-contract-SctM4ibF.d.ts} +157 -150
- package/dist/ui.d.ts +10 -11
- package/dist/ui.js +2 -2
- package/package.json +35 -74
- package/dist/bundle-CDd5FKeD.d.ts +0 -283
- package/dist/cards-Sl3b40Mv.d.ts +0 -13
- package/dist/chunk-7YAHLYBR.js +0 -481
- package/dist/chunk-7YAHLYBR.js.map +0 -1
- package/dist/chunk-FDNZTDD6.js.map +0 -1
- package/dist/chunk-GKKBPPSW.js.map +0 -1
- package/dist/chunk-I46YJSOD.js +0 -1
- package/dist/chunk-MKXPVOUT.js.map +0 -1
- package/dist/chunk-T52J5RMF.js +0 -1
- package/dist/chunk-TDSWKVZ4.js.map +0 -1
- package/dist/chunk-U5C6BONG.js +0 -34
- package/dist/chunk-U5C6BONG.js.map +0 -1
- package/dist/chunk-WYPQ3GG5.js.map +0 -1
- package/dist/generated/runtime/primitives.d.ts +0 -12
- package/dist/generated/runtime/primitives.js +0 -180
- package/dist/generated/runtime/primitives.js.map +0 -1
- package/dist/generated/runtime-api.d.ts +0 -3
- package/dist/generated/runtime-api.js +0 -2
- package/dist/generated/runtime.d.ts +0 -14
- package/dist/generated/runtime.js +0 -18
- package/dist/generated/runtime.js.map +0 -1
- package/dist/generated/workspace-contract.d.ts +0 -14
- package/dist/generated/workspace-contract.js +0 -14
- package/dist/generated/workspace-contract.js.map +0 -1
- package/dist/infrastructure/reducer-bundle-abi.js.map +0 -1
- package/dist/infrastructure/workspace-codegen.d.ts +0 -53
- package/dist/infrastructure/workspace-codegen.js.map +0 -1
- package/dist/manifest-contract-BNHVGFtU.d.ts +0 -9
- package/dist/primitive-props-DpKs-GCr.d.ts +0 -11
- package/dist/runtime/types/runtime-api.d.ts +0 -1
- package/dist/runtime/types/runtime-api.js +0 -2
- package/dist/runtime-api-3dshj6kK.d.ts +0 -101
- package/dist/slots-1GPGihk8.d.ts +0 -8
- package/src/generated/reducer-contract/builders.ts +0 -90
- package/src/generated/reducer-contract/version.ts +0 -9
- package/src/generated/reducer-contract/wire.ts +0 -100
- package/src/generated/reducer-contract/zod.ts +0 -103
- package/src/generated/runtime/primitives.ts +0 -2
- package/src/generated/runtime-api.ts +0 -5
- package/src/generated/runtime.ts +0 -35
- package/src/generated/workspace-contract.ts +0 -2
- package/src/index.ts +0 -7
- package/src/infrastructure/reducer-bundle-abi.ts +0 -8
- package/src/infrastructure/reducer-contract/bundle.ts +0 -37
- package/src/infrastructure/workspace-codegen/hex-geometry.ts +0 -69
- package/src/infrastructure/workspace-codegen/index.ts +0 -64
- package/src/infrastructure/workspace-codegen/manifest-contract.ts +0 -6632
- package/src/infrastructure/workspace-codegen/manifest-validation.ts +0 -795
- package/src/infrastructure/workspace-codegen/ownership.ts +0 -131
- package/src/infrastructure/workspace-codegen/preset-card-sets.ts +0 -169
- package/src/infrastructure/workspace-codegen/seeds.ts +0 -1705
- package/src/infrastructure/workspace-codegen.ts +0 -1
- package/src/package-set.ts +0 -19
- package/src/reducer/authoring/contract.ts +0 -157
- package/src/reducer/authoring/effect.ts +0 -224
- package/src/reducer/authoring/game.ts +0 -23
- package/src/reducer/authoring/interaction.ts +0 -98
- package/src/reducer/authoring/phase.ts +0 -300
- package/src/reducer/authoring/types.ts +0 -70
- package/src/reducer/authoring/validation.ts +0 -382
- package/src/reducer/authoring/view-stage.ts +0 -68
- package/src/reducer/authoring.ts +0 -29
- package/src/reducer/bundle/ingress-bundle.ts +0 -491
- package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +0 -254
- package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +0 -73
- package/src/reducer/bundle/trusted/instruction-runner.ts +0 -414
- package/src/reducer/bundle/trusted/interaction-authorization.ts +0 -137
- package/src/reducer/bundle/trusted/interaction-collectors.ts +0 -859
- package/src/reducer/bundle/trusted/interaction-decision.ts +0 -747
- package/src/reducer/bundle/trusted/interaction-resolver.ts +0 -95
- package/src/reducer/bundle/trusted/interaction-types.ts +0 -171
- package/src/reducer/bundle/trusted/lifecycle-runner.ts +0 -427
- package/src/reducer/bundle/trusted/projection-builder.ts +0 -356
- package/src/reducer/bundle/trusted/projection-context.ts +0 -39
- package/src/reducer/bundle/trusted/rng-sampler.ts +0 -150
- package/src/reducer/bundle/trusted/runtime-registry.ts +0 -120
- package/src/reducer/bundle/trusted/runtime-scope.ts +0 -336
- package/src/reducer/bundle/trusted/simultaneous-player.ts +0 -97
- package/src/reducer/bundle/trusted/stage-resolver.ts +0 -87
- package/src/reducer/bundle/trusted/static-projection.ts +0 -116
- package/src/reducer/bundle/trusted/trusted-runtime-args.ts +0 -97
- package/src/reducer/bundle/trusted/trusted-runtime-result.ts +0 -39
- package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +0 -43
- package/src/reducer/bundle/trusted/trusted-state-codec.ts +0 -48
- package/src/reducer/bundle/trusted-bundle.ts +0 -97
- package/src/reducer/bundle/types.ts +0 -171
- package/src/reducer/bundle.ts +0 -2
- package/src/reducer/client-param-schemas.ts +0 -57
- package/src/reducer/compose.ts +0 -34
- package/src/reducer/core/runtime-input.ts +0 -30
- package/src/reducer/core/runtime-instruction.ts +0 -59
- package/src/reducer/core/types.ts +0 -62
- package/src/reducer/definition-index.ts +0 -277
- package/src/reducer/derived.ts +0 -106
- package/src/reducer/effects.ts +0 -92
- package/src/reducer/engine/runtime-instruction-engine.ts +0 -155
- package/src/reducer/ingress/decode-runtime-input.ts +0 -7
- package/src/reducer/ingress/decode-session-state.ts +0 -9
- package/src/reducer/ingress/encode-session-state.ts +0 -6
- package/src/reducer/ingress/input-codec.ts +0 -18
- package/src/reducer/ingress/phase-schemas.ts +0 -62
- package/src/reducer/ingress/raw-types.ts +0 -107
- package/src/reducer/ingress/runtime-codec.ts +0 -14
- package/src/reducer/ingress/runtime-payload.ts +0 -13
- package/src/reducer/ingress/session-codec.ts +0 -392
- package/src/reducer/ingress/types.ts +0 -6
- package/src/reducer/inputs/boardInput.ts +0 -217
- package/src/reducer/inputs/boardTarget.ts +0 -190
- package/src/reducer/inputs/cardInput.ts +0 -86
- package/src/reducer/inputs/cardTarget.ts +0 -101
- package/src/reducer/inputs/choiceTarget.ts +0 -104
- package/src/reducer/inputs/defineInputs.ts +0 -71
- package/src/reducer/inputs/formInput.ts +0 -809
- package/src/reducer/inputs/many.ts +0 -120
- package/src/reducer/inputs/promptInput.ts +0 -87
- package/src/reducer/inputs/rngInput.ts +0 -58
- package/src/reducer/inputs/targetRule.ts +0 -123
- package/src/reducer/inputs.ts +0 -41
- package/src/reducer/model/definition.ts +0 -1072
- package/src/reducer/model/extract.ts +0 -745
- package/src/reducer/model/manifest.ts +0 -570
- package/src/reducer/model/queries.ts +0 -641
- package/src/reducer/model/runtime.ts +0 -264
- package/src/reducer/model/spec.ts +0 -1386
- package/src/reducer/model/table.ts +0 -260
- package/src/reducer/model.ts +0 -7
- package/src/reducer/ops.ts +0 -1034
- package/src/reducer/parse-utils.ts +0 -28
- package/src/reducer/per-player.ts +0 -422
- package/src/reducer/rng.ts +0 -69
- package/src/reducer/schema-helpers.ts +0 -185
- package/src/reducer/setup-bootstrap-helpers.ts +0 -171
- package/src/reducer/setup-bootstrap.ts +0 -481
- package/src/reducer/table-ops.ts +0 -2671
- package/src/reducer/table-queries.ts +0 -372
- package/src/reducer/transaction.ts +0 -120
- package/src/reducer.ts +0 -314
- package/src/runtime/primitives.ts +0 -1
- package/src/runtime/types/runtime-api.ts +0 -1
- package/src/runtime/workspace-contract.ts +0 -32
- package/src/runtime-internal/components/InteractionForm.tsx +0 -1309
- package/src/runtime-internal/components/PluginRuntime.tsx +0 -103
- package/src/runtime-internal/components/board/target-layer.ts +0 -70
- package/src/runtime-internal/context/ClientParamSchemaContext.tsx +0 -44
- package/src/runtime-internal/context/InteractionDraftContext.tsx +0 -279
- package/src/runtime-internal/context/PluginSessionContext.tsx +0 -47
- package/src/runtime-internal/context/PluginStateContext.tsx +0 -262
- package/src/runtime-internal/context/RuntimeContext.tsx +0 -96
- package/src/runtime-internal/defaults/components.tsx +0 -409
- package/src/runtime-internal/defaults/index.ts +0 -11
- package/src/runtime-internal/errors/ValidationError.ts +0 -29
- package/src/runtime-internal/hooks/useActivePlayers.ts +0 -33
- package/src/runtime-internal/hooks/useBoardInteractions.ts +0 -665
- package/src/runtime-internal/hooks/useGameSelector.ts +0 -105
- package/src/runtime-internal/hooks/useGameView.ts +0 -9
- package/src/runtime-internal/hooks/useInteractionByKey.ts +0 -354
- package/src/runtime-internal/hooks/useInteractionHandle.ts +0 -438
- package/src/runtime-internal/hooks/useIsMyTurn.ts +0 -20
- package/src/runtime-internal/hooks/useLobby.ts +0 -76
- package/src/runtime-internal/hooks/useMe.ts +0 -48
- package/src/runtime-internal/hooks/usePlayerInfo.ts +0 -28
- package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +0 -23
- package/src/runtime-internal/hooks/usePluginRuntime.ts +0 -147
- package/src/runtime-internal/hooks/useSeatInbox.ts +0 -61
- package/src/runtime-internal/hooks/useSimultaneousPhase.ts +0 -10
- package/src/runtime-internal/index.ts +0 -42
- package/src/runtime-internal/internal.ts +0 -43
- package/src/runtime-internal/plugin-styles.css +0 -250
- package/src/runtime-internal/primitives/board.tsx +0 -459
- package/src/runtime-internal/primitives/dialog-lifecycle.ts +0 -58
- package/src/runtime-internal/primitives/dice.tsx +0 -79
- package/src/runtime-internal/primitives/game-ui-provider.tsx +0 -35
- package/src/runtime-internal/primitives/game.tsx +0 -387
- package/src/runtime-internal/primitives/hand-intent-adapter.ts +0 -147
- package/src/runtime-internal/primitives/hand-surface.tsx +0 -594
- package/src/runtime-internal/primitives/index.ts +0 -196
- package/src/runtime-internal/primitives/interaction-form-binding.tsx +0 -56
- package/src/runtime-internal/primitives/interaction-submit.ts +0 -90
- package/src/runtime-internal/primitives/interaction.tsx +0 -987
- package/src/runtime-internal/primitives/phase.tsx +0 -43
- package/src/runtime-internal/primitives/player-roster.tsx +0 -302
- package/src/runtime-internal/primitives/primitive-props.tsx +0 -101
- package/src/runtime-internal/primitives/prompt.tsx +0 -255
- package/src/runtime-internal/primitives/ui.tsx +0 -60
- package/src/runtime-internal/primitives/zone.tsx +0 -791
- package/src/runtime-internal/reducer.ts +0 -30
- package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +0 -605
- package/src/runtime-internal/types/plugin-state.ts +0 -508
- package/src/runtime-internal/types/reducer-state.ts +0 -24
- package/src/runtime-internal/types/runtime-api.ts +0 -114
- package/src/runtime-internal/ui-contract.ts +0 -519
- package/src/runtime-internal/utils/card-intent-adapter.ts +0 -546
- package/src/runtime-internal/utils/interaction-inputs.ts +0 -492
- package/src/runtime-internal/utils/interaction-labels.ts +0 -23
- package/src/runtime-internal/utils/interaction-router.ts +0 -273
- package/src/runtime-internal/utils/interaction-status.ts +0 -74
- package/src/runtime-internal/workspace-contract.ts +0 -1170
- package/src/runtime.ts +0 -34
- package/src/testing/create-expect-api.ts +0 -352
- package/src/testing/create-test-runtime.ts +0 -381
- package/src/testing/definitions.ts +0 -127
- package/src/testing/index.ts +0 -3
- package/src/testing.ts +0 -1
- package/src/type-stubs/manifest-contract.d.ts +0 -42
- package/src/type-stubs/manifest-contract.js +0 -72
- package/src/type-stubs/ui-contract.d.ts +0 -5
- package/src/type-stubs/ui-contract.js +0 -1
- package/src/types/authoring-card-properties.type-test.ts +0 -266
- package/src/types/authoring.ts +0 -1282
- package/src/types/cards.ts +0 -19
- package/src/types/contracts.ts +0 -1550
- package/src/types/generated-helpers.ts +0 -35
- package/src/types/index.ts +0 -147
- package/src/types/slots.ts +0 -11
- package/src/types.ts +0 -1
- package/src/ui/components/ActionButton.tsx +0 -97
- package/src/ui/components/ActionPanel.tsx +0 -315
- package/src/ui/components/Card.tsx +0 -378
- package/src/ui/components/CardDragSurface.tsx +0 -1076
- package/src/ui/components/ChromeSuppressionContext.tsx +0 -70
- package/src/ui/components/CostDisplay.tsx +0 -145
- package/src/ui/components/DiceRoller.tsx +0 -581
- package/src/ui/components/Drawer.tsx +0 -180
- package/src/ui/components/ErrorBoundary.tsx +0 -275
- package/src/ui/components/GameEndDisplay.tsx +0 -398
- package/src/ui/components/GameSkeleton.tsx +0 -260
- package/src/ui/components/Hand.tsx +0 -468
- package/src/ui/components/HandDock.tsx +0 -299
- package/src/ui/components/HandView.tsx +0 -441
- package/src/ui/components/MobileHandTray.tsx +0 -381
- package/src/ui/components/MoreActions.tsx +0 -143
- package/src/ui/components/PhaseIndicator.tsx +0 -341
- package/src/ui/components/PlayArea.tsx +0 -146
- package/src/ui/components/PrimaryActionButton.tsx +0 -336
- package/src/ui/components/PrimaryButton.tsx +0 -45
- package/src/ui/components/ResourceCounter.tsx +0 -270
- package/src/ui/components/StagingZone.tsx +0 -134
- package/src/ui/components/ThemedButton.tsx +0 -113
- package/src/ui/components/Toast.tsx +0 -264
- package/src/ui/components/board/HexGrid.tsx +0 -1294
- package/src/ui/components/board/NetworkGraph.tsx +0 -476
- package/src/ui/components/board/SlotSystem.tsx +0 -388
- package/src/ui/components/board/SquareGrid.tsx +0 -1165
- package/src/ui/components/board/TrackBoard.tsx +0 -496
- package/src/ui/components/board/ZoneMap.tsx +0 -448
- package/src/ui/components/board/hex-board-view.ts +0 -123
- package/src/ui/components/board/index.ts +0 -142
- package/src/ui/components/board/interaction-accessibility.ts +0 -21
- package/src/ui/components/board/target-layer.ts +0 -66
- package/src/ui/components/card-render-content.type-test.ts +0 -27
- package/src/ui/components/hand-layout-math.ts +0 -163
- package/src/ui/components/hand-pointer-engine.ts +0 -413
- package/src/ui/components/index.ts +0 -245
- package/src/ui/components.ts +0 -1
- package/src/ui/defaults/components.tsx +0 -106
- package/src/ui/defaults/index.ts +0 -8
- package/src/ui/defaults.ts +0 -1
- package/src/ui/errors/ValidationError.ts +0 -29
- package/src/ui/helpers/cards.ts +0 -19
- package/src/ui/helpers/track-board.ts +0 -211
- package/src/ui/hooks/useBoardTopology.ts +0 -316
- package/src/ui/hooks/useCards.ts +0 -10
- package/src/ui/hooks/useHandCardPointer.ts +0 -381
- package/src/ui/hooks/useHandLayout.ts +0 -378
- package/src/ui/hooks/useHandPresentation.ts +0 -121
- package/src/ui/hooks/useHexBoard.ts +0 -74
- package/src/ui/hooks/useHexGrid.ts +0 -185
- package/src/ui/hooks/useIsMobile.ts +0 -35
- package/src/ui/hooks/usePanZoom.ts +0 -278
- package/src/ui/hooks/useSquareBoard.ts +0 -124
- package/src/ui/hooks/useSquareGrid.ts +0 -328
- package/src/ui/index.ts +0 -98
- package/src/ui/internal/ui/alert.tsx +0 -51
- package/src/ui/internal/ui/button.tsx +0 -58
- package/src/ui/internal/ui/dialog.tsx +0 -134
- package/src/ui/internal/ui/input.tsx +0 -21
- package/src/ui/internal/ui/label.tsx +0 -21
- package/src/ui/internal/ui/select.tsx +0 -129
- package/src/ui/internal/ui/tooltip.tsx +0 -54
- package/src/ui/internal/ui/utils.ts +0 -5
- package/src/ui/plugin-styles.css +0 -250
- package/src/ui/primitives/dialog-lifecycle.ts +0 -58
- package/src/ui/primitives/dice.tsx +0 -79
- package/src/ui/primitives/primitive-props.tsx +0 -101
- package/src/ui/theme/ThemeProvider.tsx +0 -252
- package/src/ui/theme/board.ts +0 -61
- package/src/ui/theme/css-vars.ts +0 -105
- package/src/ui/theme/derive.ts +0 -240
- package/src/ui/theme/index.ts +0 -61
- package/src/ui/theme/presets/arcade.ts +0 -261
- package/src/ui/theme/presets/studio.ts +0 -261
- package/src/ui/theme/presets/tabletop.ts +0 -266
- package/src/ui/theme/tokens.ts +0 -392
- package/src/ui/types/hex-color.ts +0 -20
- package/src/ui/types/player-state.ts +0 -463
- package/src/ui/types/tiled-board.ts +0 -785
- package/src/ui/types/visual-state.ts +0 -137
- package/src/ui.ts +0 -1
- /package/dist/{chunk-I46YJSOD.js.map → browser-interaction.js.map} +0 -0
- /package/dist/{chunk-KAELH4KC.js.map → chunk-3RQEICD3.js.map} +0 -0
- /package/dist/{chunk-T52J5RMF.js.map → codegen.js.map} +0 -0
- /package/dist/{generated/runtime-api.js.map → reducer-contract.js.map} +0 -0
- /package/dist/runtime/{types/runtime-api.js.map → runtime-api.js.map} +0 -0
- /package/dist/ui/{types/player-state.js → player-state.js} +0 -0
- /package/dist/ui/{types/player-state.js.map → player-state.js.map} +0 -0
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-U5C6BONG.js";
|
|
4
|
-
import {
|
|
2
|
+
Board,
|
|
5
3
|
ClientParamSchemaProvider,
|
|
4
|
+
Dice,
|
|
5
|
+
Game,
|
|
6
6
|
HandStagingView,
|
|
7
7
|
HandSurfaceView,
|
|
8
|
+
Interaction,
|
|
9
|
+
Phase,
|
|
10
|
+
PlayerRoster,
|
|
11
|
+
Prompt,
|
|
12
|
+
PromptInbox,
|
|
13
|
+
UI,
|
|
14
|
+
Zone,
|
|
8
15
|
dropTargetIdFor,
|
|
9
16
|
isInteractionAvailable,
|
|
10
17
|
usePluginState,
|
|
11
18
|
useResolvedCardTargetValue,
|
|
12
19
|
useZoneCards
|
|
13
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-ADYH6PVT.js";
|
|
14
21
|
import {
|
|
15
22
|
CardFace,
|
|
16
23
|
MobileHandTrayProvider,
|
|
@@ -18,144 +25,188 @@ import {
|
|
|
18
25
|
createResourceCounter,
|
|
19
26
|
useIsMobile,
|
|
20
27
|
useRegisterMobileHand
|
|
21
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-QZ6X4B5P.js";
|
|
22
29
|
|
|
23
|
-
// src/runtime
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
function
|
|
28
|
-
if (card && typeof card === "object" && "hidden" in card && card.hidden === false) {
|
|
29
|
-
return card;
|
|
30
|
-
}
|
|
30
|
+
// src/runtime/workspace-contract/index.ts
|
|
31
|
+
import { createElement as createElement6 } from "react";
|
|
32
|
+
|
|
33
|
+
// src/runtime/ui-contract.ts
|
|
34
|
+
function createDreamboardUI(contract) {
|
|
31
35
|
return {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
contract,
|
|
37
|
+
Root: UI.Root,
|
|
38
|
+
Game,
|
|
39
|
+
Interaction,
|
|
40
|
+
Prompt,
|
|
41
|
+
PromptInbox,
|
|
42
|
+
PlayerRoster,
|
|
43
|
+
Dice,
|
|
44
|
+
Phase,
|
|
45
|
+
Zone,
|
|
46
|
+
Board
|
|
36
47
|
};
|
|
37
48
|
}
|
|
49
|
+
|
|
50
|
+
// src/runtime/workspace-contract/board.ts
|
|
51
|
+
import { createElement as createElement2 } from "react";
|
|
52
|
+
|
|
53
|
+
// src/runtime/workspace-contract/slots.ts
|
|
54
|
+
import { Fragment as ReactFragment, createElement } from "react";
|
|
38
55
|
function CardSlotValue({
|
|
39
56
|
children
|
|
40
57
|
}) {
|
|
41
58
|
const value = useResolvedCardTargetValue();
|
|
42
59
|
return createElement(ReactFragment, null, children(value));
|
|
43
60
|
}
|
|
44
|
-
function
|
|
45
|
-
const baseUI =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
function createFormInputSlot(ctx, input, interaction) {
|
|
62
|
+
const { baseUI, withInteractionRoot } = ctx;
|
|
63
|
+
return {
|
|
64
|
+
Field: (props) => {
|
|
65
|
+
const field = createElement(baseUI.Interaction.Field, {
|
|
66
|
+
...props,
|
|
67
|
+
input
|
|
68
|
+
});
|
|
69
|
+
return interaction ? withInteractionRoot(interaction, field) : field;
|
|
70
|
+
},
|
|
71
|
+
Options: () => null,
|
|
72
|
+
Value: ({
|
|
73
|
+
children
|
|
74
|
+
}) => createElement(ReactFragment, null, children(void 0)),
|
|
75
|
+
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function createCardInputSlot(ctx) {
|
|
79
|
+
const { runtimeInteraction } = ctx;
|
|
80
|
+
return {
|
|
81
|
+
Card: ({ value, ...props }) => createElement(runtimeInteraction.CardInput, {
|
|
82
|
+
...props,
|
|
83
|
+
input: "cardId",
|
|
84
|
+
unsafeCardId: value
|
|
85
|
+
}),
|
|
86
|
+
Cards: () => null,
|
|
87
|
+
Value: ({
|
|
88
|
+
children
|
|
89
|
+
}) => createElement(CardSlotValue, { children }),
|
|
90
|
+
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function createBoardTargetInputSlot(ctx, kind) {
|
|
94
|
+
const { runtimeBoard } = ctx;
|
|
95
|
+
const Target = ({
|
|
96
|
+
value,
|
|
97
|
+
...props
|
|
98
|
+
}) => {
|
|
99
|
+
if (kind === "edge") {
|
|
100
|
+
return createElement(runtimeBoard.EdgeTarget, { ...props, value });
|
|
101
|
+
}
|
|
102
|
+
if (kind === "vertex") {
|
|
103
|
+
return createElement(runtimeBoard.VertexTarget, { ...props, value });
|
|
104
|
+
}
|
|
105
|
+
return createElement(runtimeBoard.SpaceTarget, { ...props, value });
|
|
106
|
+
};
|
|
107
|
+
return {
|
|
108
|
+
Target,
|
|
109
|
+
Value: ({
|
|
110
|
+
children
|
|
111
|
+
}) => createElement(ReactFragment, null, children(void 0)),
|
|
112
|
+
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/runtime/workspace-contract/board.ts
|
|
117
|
+
function createUseBoardSurface(ctx) {
|
|
118
|
+
const { baseUI, runtimeBoard } = ctx;
|
|
119
|
+
return function useBoardSurface(_name) {
|
|
51
120
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
121
|
+
Root: ({ children }) => createElement2(baseUI.Board.Root, { children }),
|
|
122
|
+
Space: (props) => createElement2(runtimeBoard.SpaceTarget, props),
|
|
123
|
+
slot: {
|
|
124
|
+
space: createBoardTargetInputSlot(ctx, "space"),
|
|
125
|
+
playerSpace: createBoardTargetInputSlot(ctx, "space"),
|
|
126
|
+
edge: createBoardTargetInputSlot(ctx, "edge"),
|
|
127
|
+
vertex: createBoardTargetInputSlot(ctx, "vertex"),
|
|
128
|
+
tile: createBoardTargetInputSlot(ctx, "tile")
|
|
129
|
+
}
|
|
55
130
|
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function createBoardNamespace(ctx) {
|
|
134
|
+
const { options, baseUI } = ctx;
|
|
135
|
+
const useBoardSurface = createUseBoardSurface(ctx);
|
|
136
|
+
return {
|
|
137
|
+
surface(board) {
|
|
138
|
+
return { kind: "board", board };
|
|
139
|
+
},
|
|
140
|
+
useSurface: useBoardSurface,
|
|
141
|
+
HexView({ board: boardId, ...props }) {
|
|
142
|
+
return createElement2(
|
|
143
|
+
baseUI.Board.HexView,
|
|
144
|
+
{
|
|
145
|
+
...props,
|
|
146
|
+
board: options.hexStaticBoards[boardId]
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
},
|
|
150
|
+
HexGrid({ board: boardId, ...props }) {
|
|
151
|
+
return createElement2(
|
|
152
|
+
baseUI.Board.HexGrid,
|
|
153
|
+
{
|
|
154
|
+
...props,
|
|
155
|
+
board: options.hexStaticBoards[boardId]
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// src/runtime/workspace-contract/forms.ts
|
|
163
|
+
import { createElement as createElement3 } from "react";
|
|
164
|
+
function createInteractionForms(ctx) {
|
|
165
|
+
const { options, baseUI, runtimeInteraction, withInteractionRoot } = ctx;
|
|
60
166
|
function InteractionRoutes({
|
|
61
167
|
routes,
|
|
62
168
|
fallback,
|
|
63
169
|
includeUnavailable
|
|
64
170
|
}) {
|
|
65
|
-
return
|
|
171
|
+
return createElement3(runtimeInteraction.Routes, {
|
|
66
172
|
routes,
|
|
67
173
|
fallback,
|
|
68
174
|
includeUnavailable
|
|
69
175
|
});
|
|
70
176
|
}
|
|
71
|
-
const withInteractionRoot = (interaction, children) => createElement(runtimeInteraction.Root, {
|
|
72
|
-
interaction,
|
|
73
|
-
children
|
|
74
|
-
});
|
|
75
|
-
function createFormInputSlot(input, interaction) {
|
|
76
|
-
return {
|
|
77
|
-
Field: (props) => {
|
|
78
|
-
const field = createElement(baseUI.Interaction.Field, {
|
|
79
|
-
...props,
|
|
80
|
-
input
|
|
81
|
-
});
|
|
82
|
-
return interaction ? withInteractionRoot(interaction, field) : field;
|
|
83
|
-
},
|
|
84
|
-
Options: () => null,
|
|
85
|
-
Value: ({
|
|
86
|
-
children
|
|
87
|
-
}) => createElement(ReactFragment, null, children(void 0)),
|
|
88
|
-
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function createCardInputSlot() {
|
|
92
|
-
return {
|
|
93
|
-
Card: ({ value, ...props }) => createElement(runtimeInteraction.CardInput, {
|
|
94
|
-
...props,
|
|
95
|
-
input: "cardId",
|
|
96
|
-
unsafeCardId: value
|
|
97
|
-
}),
|
|
98
|
-
Cards: () => null,
|
|
99
|
-
Value: ({
|
|
100
|
-
children
|
|
101
|
-
}) => createElement(CardSlotValue, { children }),
|
|
102
|
-
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function createBoardTargetInputSlot(kind) {
|
|
106
|
-
const Target = ({
|
|
107
|
-
value,
|
|
108
|
-
...props
|
|
109
|
-
}) => {
|
|
110
|
-
if (kind === "edge") {
|
|
111
|
-
return createElement(runtimeBoard.EdgeTarget, { ...props, value });
|
|
112
|
-
}
|
|
113
|
-
if (kind === "vertex") {
|
|
114
|
-
return createElement(runtimeBoard.VertexTarget, { ...props, value });
|
|
115
|
-
}
|
|
116
|
-
return createElement(runtimeBoard.SpaceTarget, { ...props, value });
|
|
117
|
-
};
|
|
118
|
-
return {
|
|
119
|
-
Target,
|
|
120
|
-
Value: ({
|
|
121
|
-
children
|
|
122
|
-
}) => createElement(ReactFragment, null, children(void 0)),
|
|
123
|
-
Default: ({ children }) => createElement(ReactFragment, null, children)
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
177
|
function useInteractionFormSurface(interaction) {
|
|
127
178
|
const validInputs = options.formInputKeysForInteraction(interaction);
|
|
128
179
|
const slot = Object.fromEntries(
|
|
129
180
|
[...validInputs].map((input) => [
|
|
130
181
|
input,
|
|
131
|
-
createFormInputSlot(input, interaction)
|
|
182
|
+
createFormInputSlot(ctx, input, interaction)
|
|
132
183
|
])
|
|
133
184
|
);
|
|
134
185
|
return {
|
|
135
186
|
Root: ({ children }) => withInteractionRoot(interaction, children),
|
|
136
187
|
Form: (props) => withInteractionRoot(
|
|
137
188
|
interaction,
|
|
138
|
-
|
|
189
|
+
createElement3(baseUI.Interaction.Form, props)
|
|
139
190
|
),
|
|
140
191
|
Dialog: (props) => withInteractionRoot(
|
|
141
192
|
interaction,
|
|
142
|
-
|
|
193
|
+
createElement3(baseUI.Interaction.Dialog, props)
|
|
143
194
|
),
|
|
144
195
|
State: (props) => withInteractionRoot(
|
|
145
196
|
interaction,
|
|
146
|
-
|
|
197
|
+
createElement3(baseUI.Interaction.State, props)
|
|
147
198
|
),
|
|
148
199
|
Arm: (props) => withInteractionRoot(
|
|
149
200
|
interaction,
|
|
150
|
-
|
|
201
|
+
createElement3(baseUI.Interaction.Trigger, props)
|
|
151
202
|
),
|
|
152
203
|
Submit: (props) => withInteractionRoot(
|
|
153
204
|
interaction,
|
|
154
|
-
|
|
205
|
+
createElement3(baseUI.Interaction.Submit, props)
|
|
155
206
|
),
|
|
156
207
|
Field: ({ input, ...props }) => withInteractionRoot(
|
|
157
208
|
interaction,
|
|
158
|
-
|
|
209
|
+
createElement3(baseUI.Interaction.Field, {
|
|
159
210
|
...props,
|
|
160
211
|
input
|
|
161
212
|
})
|
|
@@ -163,41 +214,95 @@ function createWorkspaceUIContract(options) {
|
|
|
163
214
|
slot
|
|
164
215
|
};
|
|
165
216
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
217
|
+
const Interaction2 = {
|
|
218
|
+
State: baseUI.Interaction.State,
|
|
219
|
+
Dialog: baseUI.Interaction.Dialog,
|
|
220
|
+
useForm: useInteractionFormSurface,
|
|
221
|
+
form(interaction) {
|
|
222
|
+
return { kind: "form", interaction };
|
|
223
|
+
},
|
|
224
|
+
forms(interactions) {
|
|
225
|
+
return { kind: "forms", interactions };
|
|
226
|
+
},
|
|
227
|
+
Routes: InteractionRoutes
|
|
228
|
+
};
|
|
229
|
+
return { Interaction: Interaction2, useInteractionFormSurface };
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// src/runtime/workspace-contract/surfaces.ts
|
|
233
|
+
function isPlainObject(value) {
|
|
234
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
235
|
+
}
|
|
236
|
+
function isSurfaceDescriptor(value) {
|
|
237
|
+
return isPlainObject(value) && typeof value.kind === "string";
|
|
238
|
+
}
|
|
239
|
+
function createSurfaceResolvers({
|
|
240
|
+
Board: Board2,
|
|
241
|
+
Zone: Zone2,
|
|
242
|
+
useInteractionFormSurface
|
|
243
|
+
}) {
|
|
244
|
+
function resolveSurfaceDescriptor(name, descriptor) {
|
|
245
|
+
switch (descriptor.kind) {
|
|
246
|
+
case "board":
|
|
247
|
+
return Board2.useSurface(name);
|
|
248
|
+
case "hand":
|
|
249
|
+
return Zone2.useHand(name, {
|
|
250
|
+
zone: descriptor.zone,
|
|
251
|
+
role: descriptor.role,
|
|
252
|
+
label: descriptor.label,
|
|
253
|
+
order: descriptor.order
|
|
254
|
+
});
|
|
255
|
+
case "pile":
|
|
256
|
+
return Zone2.usePile(name, { zone: descriptor.zone });
|
|
257
|
+
case "piles":
|
|
258
|
+
return Object.fromEntries(
|
|
259
|
+
descriptor.zones.map((zone) => [
|
|
260
|
+
zone,
|
|
261
|
+
Zone2.usePile(String(zone), { zone })
|
|
262
|
+
])
|
|
263
|
+
);
|
|
264
|
+
case "cardCollection":
|
|
265
|
+
return Zone2.useCardCollection(name, {
|
|
266
|
+
zones: descriptor.zones,
|
|
267
|
+
mode: descriptor.mode
|
|
268
|
+
});
|
|
269
|
+
case "form":
|
|
270
|
+
return useInteractionFormSurface(descriptor.interaction);
|
|
271
|
+
case "forms":
|
|
272
|
+
return Object.fromEntries(
|
|
273
|
+
Object.entries(descriptor.interactions).map(([key, interaction]) => [
|
|
274
|
+
key,
|
|
275
|
+
useInteractionFormSurface(interaction)
|
|
276
|
+
])
|
|
277
|
+
);
|
|
278
|
+
}
|
|
178
279
|
}
|
|
179
|
-
function
|
|
180
|
-
return (
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
ReactFragment,
|
|
186
|
-
null,
|
|
187
|
-
...zones.map(
|
|
188
|
-
(zone) => createElement(baseUI.Zone.Root, {
|
|
189
|
-
key: zone,
|
|
190
|
-
zone,
|
|
191
|
-
children: createElement(runtimeZone.List, {
|
|
192
|
-
...props,
|
|
193
|
-
empty,
|
|
194
|
-
children
|
|
195
|
-
})
|
|
196
|
-
})
|
|
197
|
-
)
|
|
280
|
+
function resolveSurfaceSpec(spec) {
|
|
281
|
+
return Object.fromEntries(
|
|
282
|
+
Object.entries(spec).map(([key, value]) => [
|
|
283
|
+
key,
|
|
284
|
+
isSurfaceDescriptor(value) ? resolveSurfaceDescriptor(key, value) : resolveSurfaceSpec(value)
|
|
285
|
+
])
|
|
198
286
|
);
|
|
199
287
|
}
|
|
200
|
-
function
|
|
288
|
+
function defineSurfaces(spec) {
|
|
289
|
+
return function useDefinedSurfaces() {
|
|
290
|
+
return resolveSurfaceSpec(spec);
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
return { defineSurfaces, resolveSurfaceSpec, resolveSurfaceDescriptor };
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// src/runtime/workspace-contract/zones.ts
|
|
297
|
+
import { Fragment as ReactFragment2, createElement as createElement5 } from "react";
|
|
298
|
+
import { clsx as clsx2 } from "clsx";
|
|
299
|
+
|
|
300
|
+
// src/runtime/workspace-contract/hand.ts
|
|
301
|
+
import { createElement as createElement4, useMemo } from "react";
|
|
302
|
+
import { clsx } from "clsx";
|
|
303
|
+
function createHandPieces(ctx) {
|
|
304
|
+
const { baseUI } = ctx;
|
|
305
|
+
function createHandCardsComponent(options) {
|
|
201
306
|
return ({
|
|
202
307
|
empty,
|
|
203
308
|
children,
|
|
@@ -213,8 +318,8 @@ function createWorkspaceUIContract(options) {
|
|
|
213
318
|
renderActions,
|
|
214
319
|
onSelectionSummary,
|
|
215
320
|
...props
|
|
216
|
-
}) =>
|
|
217
|
-
zone:
|
|
321
|
+
}) => createElement4(baseUI.Zone.Root, {
|
|
322
|
+
zone: options.zone,
|
|
218
323
|
// Fill the author's container instead of shrink-wrapping to the fan's
|
|
219
324
|
// own measured width. Without a definite width here, a centering parent
|
|
220
325
|
// sizes to the cards row, the hand measures that, recomputes a new fan
|
|
@@ -222,9 +327,9 @@ function createWorkspaceUIContract(options) {
|
|
|
222
327
|
// pins the outermost hand element to the available width and breaks the
|
|
223
328
|
// cycle for every author layout.
|
|
224
329
|
className: "w-full min-w-0",
|
|
225
|
-
children:
|
|
330
|
+
children: createElement4(GeneratedHandCards, {
|
|
226
331
|
...props,
|
|
227
|
-
hand:
|
|
332
|
+
hand: options,
|
|
228
333
|
className,
|
|
229
334
|
empty,
|
|
230
335
|
children,
|
|
@@ -276,7 +381,7 @@ function createWorkspaceUIContract(options) {
|
|
|
276
381
|
});
|
|
277
382
|
}, [dropTargets]);
|
|
278
383
|
const content = useMemo(
|
|
279
|
-
() =>
|
|
384
|
+
() => createElement4(HandSurfaceView, {
|
|
280
385
|
zone: hand.zone,
|
|
281
386
|
cards: items,
|
|
282
387
|
renderCard: (card, state, _index) => children(card, state),
|
|
@@ -337,7 +442,7 @@ function createWorkspaceUIContract(options) {
|
|
|
337
442
|
count,
|
|
338
443
|
active,
|
|
339
444
|
autoOpen,
|
|
340
|
-
content:
|
|
445
|
+
content: createElement4(baseUI.Zone.Root, {
|
|
341
446
|
zone: hand.zone,
|
|
342
447
|
children: content
|
|
343
448
|
})
|
|
@@ -358,94 +463,7 @@ function createWorkspaceUIContract(options) {
|
|
|
358
463
|
useRegisterMobileHand(registration);
|
|
359
464
|
return isMobile ? null : content;
|
|
360
465
|
}
|
|
361
|
-
function
|
|
362
|
-
return ({
|
|
363
|
-
card,
|
|
364
|
-
children,
|
|
365
|
-
className,
|
|
366
|
-
...props
|
|
367
|
-
}) => {
|
|
368
|
-
const cardId = options.cardIdFromZoneCard(card);
|
|
369
|
-
const zone = options.zoneIdFromZoneCard(card);
|
|
370
|
-
const viewCard = cardRenderItemToViewCard(card, cardId);
|
|
371
|
-
const faceDown = !!card && typeof card === "object" && "hidden" in card && card.hidden === true;
|
|
372
|
-
const renderCardFace = (state) => createElement(CardFace, {
|
|
373
|
-
card: viewCard,
|
|
374
|
-
selected: state.selected,
|
|
375
|
-
disabled: state.disabled || !state.eligible,
|
|
376
|
-
faceDown,
|
|
377
|
-
size: "sm",
|
|
378
|
-
children
|
|
379
|
-
});
|
|
380
|
-
const match = usePluginState((state) => {
|
|
381
|
-
const candidates = state.gameplay.zones[zone]?.playableByCardId[cardId] ?? [];
|
|
382
|
-
for (const descriptor of candidates) {
|
|
383
|
-
const input = descriptor.inputs.find(
|
|
384
|
-
(candidateInput) => candidateInput.domain.type === "cardTarget" && candidateInput.domain.projection === "resolved" && candidateInput.domain.eligibleTargets.includes(cardId)
|
|
385
|
-
);
|
|
386
|
-
if (input) return { descriptor, input };
|
|
387
|
-
}
|
|
388
|
-
return null;
|
|
389
|
-
});
|
|
390
|
-
if (!match) {
|
|
391
|
-
return createElement(
|
|
392
|
-
"div",
|
|
393
|
-
{
|
|
394
|
-
...props,
|
|
395
|
-
className: clsx("relative inline-flex", className),
|
|
396
|
-
"data-dreamboard-zone-card": "",
|
|
397
|
-
"data-card-id": cardId,
|
|
398
|
-
"data-zone": zone,
|
|
399
|
-
"data-interactive": false
|
|
400
|
-
},
|
|
401
|
-
createElement(CardFace, {
|
|
402
|
-
card: viewCard,
|
|
403
|
-
faceDown,
|
|
404
|
-
size: "sm",
|
|
405
|
-
children
|
|
406
|
-
})
|
|
407
|
-
);
|
|
408
|
-
}
|
|
409
|
-
return createElement(baseUI.Zone.Root, {
|
|
410
|
-
zone,
|
|
411
|
-
children: createElement(runtimeInteraction.Root, {
|
|
412
|
-
interaction: match.descriptor.interactionKey,
|
|
413
|
-
children: createElement(runtimeInteraction.CardInput, {
|
|
414
|
-
...props,
|
|
415
|
-
className: clsx(DEFAULT_ZONE_CARD_CLASS, className),
|
|
416
|
-
input: match.input.key,
|
|
417
|
-
unsafeCardId: cardId,
|
|
418
|
-
children: renderCardFace
|
|
419
|
-
})
|
|
420
|
-
})
|
|
421
|
-
});
|
|
422
|
-
};
|
|
423
|
-
}
|
|
424
|
-
const Board = {
|
|
425
|
-
surface(board) {
|
|
426
|
-
return { kind: "board", board };
|
|
427
|
-
},
|
|
428
|
-
useSurface: useBoardSurface,
|
|
429
|
-
HexView({ board: boardId, ...props }) {
|
|
430
|
-
return createElement(
|
|
431
|
-
baseUI.Board.HexView,
|
|
432
|
-
{
|
|
433
|
-
...props,
|
|
434
|
-
board: options.hexStaticBoards[boardId]
|
|
435
|
-
}
|
|
436
|
-
);
|
|
437
|
-
},
|
|
438
|
-
HexGrid({ board: boardId, ...props }) {
|
|
439
|
-
return createElement(
|
|
440
|
-
baseUI.Board.HexGrid,
|
|
441
|
-
{
|
|
442
|
-
...props,
|
|
443
|
-
board: options.hexStaticBoards[boardId]
|
|
444
|
-
}
|
|
445
|
-
);
|
|
446
|
-
}
|
|
447
|
-
};
|
|
448
|
-
function createStagingComponent(options2) {
|
|
466
|
+
function createStagingComponent(options) {
|
|
449
467
|
return ({
|
|
450
468
|
children,
|
|
451
469
|
label,
|
|
@@ -453,8 +471,8 @@ function createWorkspaceUIContract(options) {
|
|
|
453
471
|
cardSize,
|
|
454
472
|
ariaLabel,
|
|
455
473
|
className
|
|
456
|
-
}) =>
|
|
457
|
-
zone:
|
|
474
|
+
}) => createElement4(HandStagingView, {
|
|
475
|
+
zone: options.zone,
|
|
458
476
|
renderCard: (card) => children(card),
|
|
459
477
|
renderEmptySlot,
|
|
460
478
|
label,
|
|
@@ -463,9 +481,113 @@ function createWorkspaceUIContract(options) {
|
|
|
463
481
|
className
|
|
464
482
|
});
|
|
465
483
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
484
|
+
return { createHandCardsComponent, createStagingComponent };
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// src/runtime/workspace-contract/zones.ts
|
|
488
|
+
var DEFAULT_ZONE_CARD_CLASS = "group relative border-0 bg-transparent p-0 transition-transform enabled:cursor-pointer enabled:hover:-translate-y-2 data-[selected=true]:-translate-y-3 disabled:cursor-not-allowed data-[eligible=false]:opacity-45 data-[eligible=false]:grayscale data-[eligible=false]:hover:translate-y-0 data-[card-available=false]:opacity-45 data-[card-available=false]:grayscale";
|
|
489
|
+
function cardRenderItemToViewCard(card, cardId) {
|
|
490
|
+
if (card && typeof card === "object" && "hidden" in card && card.hidden === false) {
|
|
491
|
+
return card;
|
|
492
|
+
}
|
|
493
|
+
return {
|
|
494
|
+
id: cardId,
|
|
495
|
+
cardType: "hidden",
|
|
496
|
+
name: "Hidden card",
|
|
497
|
+
properties: {}
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
function createZoneCardsComponent(ctx, zones) {
|
|
501
|
+
const { baseUI, runtimeZone } = ctx;
|
|
502
|
+
return ({
|
|
503
|
+
empty,
|
|
504
|
+
children,
|
|
505
|
+
...props
|
|
506
|
+
}) => createElement5(
|
|
507
|
+
ReactFragment2,
|
|
508
|
+
null,
|
|
509
|
+
...zones.map(
|
|
510
|
+
(zone) => createElement5(baseUI.Zone.Root, {
|
|
511
|
+
key: zone,
|
|
512
|
+
zone,
|
|
513
|
+
children: createElement5(runtimeZone.List, {
|
|
514
|
+
...props,
|
|
515
|
+
empty,
|
|
516
|
+
children
|
|
517
|
+
})
|
|
518
|
+
})
|
|
519
|
+
)
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
function createZoneCardComponent(ctx) {
|
|
523
|
+
const { options, baseUI, runtimeInteraction } = ctx;
|
|
524
|
+
return ({
|
|
525
|
+
card,
|
|
526
|
+
children,
|
|
527
|
+
className,
|
|
528
|
+
...props
|
|
529
|
+
}) => {
|
|
530
|
+
const cardId = options.cardIdFromZoneCard(card);
|
|
531
|
+
const zone = options.zoneIdFromZoneCard(card);
|
|
532
|
+
const viewCard = cardRenderItemToViewCard(card, cardId);
|
|
533
|
+
const faceDown = !!card && typeof card === "object" && "hidden" in card && card.hidden === true;
|
|
534
|
+
const renderCardFace = (state) => createElement5(CardFace, {
|
|
535
|
+
card: viewCard,
|
|
536
|
+
selected: state.selected,
|
|
537
|
+
disabled: state.disabled || !state.eligible,
|
|
538
|
+
faceDown,
|
|
539
|
+
size: "sm",
|
|
540
|
+
children
|
|
541
|
+
});
|
|
542
|
+
const match = usePluginState((state) => {
|
|
543
|
+
const candidates = state.gameplay.zones[zone]?.playableByCardId[cardId] ?? [];
|
|
544
|
+
for (const descriptor of candidates) {
|
|
545
|
+
const input = descriptor.inputs.find(
|
|
546
|
+
(candidateInput) => candidateInput.domain.type === "cardTarget" && candidateInput.domain.projection === "resolved" && candidateInput.domain.eligibleTargets.includes(cardId)
|
|
547
|
+
);
|
|
548
|
+
if (input) return { descriptor, input };
|
|
549
|
+
}
|
|
550
|
+
return null;
|
|
551
|
+
});
|
|
552
|
+
if (!match) {
|
|
553
|
+
return createElement5(
|
|
554
|
+
"div",
|
|
555
|
+
{
|
|
556
|
+
...props,
|
|
557
|
+
className: clsx2("relative inline-flex", className),
|
|
558
|
+
"data-dreamboard-zone-card": "",
|
|
559
|
+
"data-card-id": cardId,
|
|
560
|
+
"data-zone": zone,
|
|
561
|
+
"data-interactive": false
|
|
562
|
+
},
|
|
563
|
+
createElement5(CardFace, {
|
|
564
|
+
card: viewCard,
|
|
565
|
+
faceDown,
|
|
566
|
+
size: "sm",
|
|
567
|
+
children
|
|
568
|
+
})
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
return createElement5(baseUI.Zone.Root, {
|
|
572
|
+
zone,
|
|
573
|
+
children: createElement5(runtimeInteraction.Root, {
|
|
574
|
+
interaction: match.descriptor.interactionKey,
|
|
575
|
+
children: createElement5(runtimeInteraction.CardInput, {
|
|
576
|
+
...props,
|
|
577
|
+
className: clsx2(DEFAULT_ZONE_CARD_CLASS, className),
|
|
578
|
+
input: match.input.key,
|
|
579
|
+
unsafeCardId: cardId,
|
|
580
|
+
children: renderCardFace
|
|
581
|
+
})
|
|
582
|
+
})
|
|
583
|
+
});
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
function createZoneNamespace(ctx) {
|
|
587
|
+
const { createHandCardsComponent, createStagingComponent } = createHandPieces(ctx);
|
|
588
|
+
return {
|
|
589
|
+
hand(zone, options) {
|
|
590
|
+
return { kind: "hand", zone, ...options };
|
|
469
591
|
},
|
|
470
592
|
pile(zone) {
|
|
471
593
|
return { kind: "pile", zone };
|
|
@@ -473,8 +595,8 @@ function createWorkspaceUIContract(options) {
|
|
|
473
595
|
piles(zones) {
|
|
474
596
|
return { kind: "piles", zones };
|
|
475
597
|
},
|
|
476
|
-
collection(zones,
|
|
477
|
-
return { kind: "cardCollection", zones, mode:
|
|
598
|
+
collection(zones, options = {}) {
|
|
599
|
+
return { kind: "cardCollection", zones, mode: options.mode };
|
|
478
600
|
},
|
|
479
601
|
useHand(_name, zoneOptions) {
|
|
480
602
|
const handComponentOptions = {
|
|
@@ -486,113 +608,87 @@ function createWorkspaceUIContract(options) {
|
|
|
486
608
|
};
|
|
487
609
|
return {
|
|
488
610
|
Hand: createHandCardsComponent(handComponentOptions),
|
|
489
|
-
Card: createZoneCardComponent(),
|
|
611
|
+
Card: createZoneCardComponent(ctx),
|
|
490
612
|
Staging: createStagingComponent(handComponentOptions),
|
|
491
|
-
slot: { card: createCardInputSlot() }
|
|
613
|
+
slot: { card: createCardInputSlot(ctx) }
|
|
492
614
|
};
|
|
493
615
|
},
|
|
494
616
|
usePile(_name, zoneOptions) {
|
|
495
617
|
return {
|
|
496
|
-
Pile: createZoneCardsComponent([zoneOptions.zone]),
|
|
497
|
-
Card: createZoneCardComponent()
|
|
618
|
+
Pile: createZoneCardsComponent(ctx, [zoneOptions.zone]),
|
|
619
|
+
Card: createZoneCardComponent(ctx)
|
|
498
620
|
};
|
|
499
621
|
},
|
|
500
622
|
useCardCollection(_name, zoneOptions) {
|
|
501
623
|
void zoneOptions.mode;
|
|
502
624
|
return {
|
|
503
|
-
Collection: createZoneCardsComponent(zoneOptions.zones),
|
|
504
|
-
Card: createZoneCardComponent(),
|
|
505
|
-
slot: { card: createCardInputSlot() }
|
|
625
|
+
Collection: createZoneCardsComponent(ctx, zoneOptions.zones),
|
|
626
|
+
Card: createZoneCardComponent(ctx),
|
|
627
|
+
slot: { card: createCardInputSlot(ctx) }
|
|
506
628
|
};
|
|
507
629
|
}
|
|
508
630
|
};
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// src/runtime/workspace-contract/index.ts
|
|
634
|
+
function createWorkspaceUIContract(options) {
|
|
635
|
+
const baseUI = createDreamboardUI(options.uiContract);
|
|
636
|
+
const runtimeInteraction = baseUI.Interaction;
|
|
637
|
+
const runtimeBoard = baseUI.Board;
|
|
638
|
+
const runtimeZone = baseUI.Zone;
|
|
639
|
+
const ctx = {
|
|
640
|
+
options,
|
|
641
|
+
// The context carries the contract-erased view of the UI: every consumer
|
|
642
|
+
// already neutralizes key genericity (`as never` inputs/zones), exactly as
|
|
643
|
+
// the original single-file factory did with its `Runtime*` casts.
|
|
644
|
+
baseUI,
|
|
645
|
+
runtimeInteraction,
|
|
646
|
+
runtimeBoard,
|
|
647
|
+
runtimeZone,
|
|
648
|
+
withInteractionRoot: (interaction, children) => createElement6(runtimeInteraction.Root, {
|
|
649
|
+
interaction,
|
|
650
|
+
children
|
|
651
|
+
})
|
|
520
652
|
};
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
function resolveSurfaceDescriptor(name, descriptor) {
|
|
528
|
-
switch (descriptor.kind) {
|
|
529
|
-
case "board":
|
|
530
|
-
return Board.useSurface(name);
|
|
531
|
-
case "hand":
|
|
532
|
-
return Zone.useHand(name, {
|
|
533
|
-
zone: descriptor.zone,
|
|
534
|
-
role: descriptor.role,
|
|
535
|
-
label: descriptor.label,
|
|
536
|
-
order: descriptor.order
|
|
537
|
-
});
|
|
538
|
-
case "pile":
|
|
539
|
-
return Zone.usePile(name, { zone: descriptor.zone });
|
|
540
|
-
case "piles":
|
|
541
|
-
return Object.fromEntries(
|
|
542
|
-
descriptor.zones.map((zone) => [
|
|
543
|
-
zone,
|
|
544
|
-
Zone.usePile(String(zone), { zone })
|
|
545
|
-
])
|
|
546
|
-
);
|
|
547
|
-
case "cardCollection":
|
|
548
|
-
return Zone.useCardCollection(name, {
|
|
549
|
-
zones: descriptor.zones,
|
|
550
|
-
mode: descriptor.mode
|
|
551
|
-
});
|
|
552
|
-
case "form":
|
|
553
|
-
return useInteractionFormSurface(descriptor.interaction);
|
|
554
|
-
case "forms":
|
|
555
|
-
return Object.fromEntries(
|
|
556
|
-
Object.entries(descriptor.interactions).map(([key, interaction]) => [
|
|
557
|
-
key,
|
|
558
|
-
useInteractionFormSurface(interaction)
|
|
559
|
-
])
|
|
560
|
-
);
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
function resolveSurfaceSpec(spec) {
|
|
564
|
-
return Object.fromEntries(
|
|
565
|
-
Object.entries(spec).map(([key, value]) => [
|
|
566
|
-
key,
|
|
567
|
-
isSurfaceDescriptor(value) ? resolveSurfaceDescriptor(key, value) : resolveSurfaceSpec(value)
|
|
568
|
-
])
|
|
569
|
-
);
|
|
570
|
-
}
|
|
571
|
-
function defineSurfaces(spec) {
|
|
572
|
-
return function useDefinedSurfaces() {
|
|
573
|
-
return resolveSurfaceSpec(spec);
|
|
653
|
+
const resourceDisplayConfig = options.resourceIds.map((resource) => {
|
|
654
|
+
const presentation = options.resourcePresentationById?.[resource];
|
|
655
|
+
return {
|
|
656
|
+
type: resource,
|
|
657
|
+
label: presentation?.label ?? resource,
|
|
658
|
+
icon: presentation?.icon ?? resource
|
|
574
659
|
};
|
|
575
|
-
}
|
|
576
|
-
const
|
|
660
|
+
});
|
|
661
|
+
const resourceCounter = createResourceCounter(
|
|
662
|
+
resourceDisplayConfig
|
|
663
|
+
);
|
|
664
|
+
const { Interaction: Interaction2, useInteractionFormSurface } = createInteractionForms(ctx);
|
|
665
|
+
const Board2 = createBoardNamespace(ctx);
|
|
666
|
+
const Zone2 = createZoneNamespace(ctx);
|
|
667
|
+
const { defineSurfaces } = createSurfaceResolvers({
|
|
668
|
+
Board: Board2,
|
|
669
|
+
Zone: Zone2,
|
|
670
|
+
useInteractionFormSurface
|
|
671
|
+
});
|
|
672
|
+
const UI2 = {
|
|
577
673
|
...baseUI,
|
|
578
|
-
Root: ({ children, ...props }) =>
|
|
674
|
+
Root: ({ children, ...props }) => createElement6(ClientParamSchemaProvider, {
|
|
579
675
|
schemas: options.clientParamSchemasByPhase,
|
|
580
|
-
children:
|
|
581
|
-
children:
|
|
582
|
-
children:
|
|
676
|
+
children: createElement6(ToastProvider, {
|
|
677
|
+
children: createElement6(MobileHandTrayProvider, {
|
|
678
|
+
children: createElement6(baseUI.Root, { ...props, children })
|
|
583
679
|
})
|
|
584
680
|
})
|
|
585
681
|
}),
|
|
586
682
|
defineSurfaces,
|
|
587
|
-
Interaction,
|
|
588
|
-
Board,
|
|
589
|
-
Zone,
|
|
683
|
+
Interaction: Interaction2,
|
|
684
|
+
Board: Board2,
|
|
685
|
+
Zone: Zone2,
|
|
590
686
|
ResourceCounter: resourceCounter
|
|
591
687
|
};
|
|
592
|
-
return
|
|
688
|
+
return UI2;
|
|
593
689
|
}
|
|
594
690
|
|
|
595
691
|
export {
|
|
596
692
|
createWorkspaceUIContract
|
|
597
693
|
};
|
|
598
|
-
//# sourceMappingURL=chunk-
|
|
694
|
+
//# sourceMappingURL=chunk-TXXLS3OI.js.map
|