react-native-layout-dnd 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +262 -0
- package/lib/module/adapters/coordinates.js +135 -0
- package/lib/module/adapters/coordinates.js.map +1 -0
- package/lib/module/adapters/scroll.js +81 -0
- package/lib/module/adapters/scroll.js.map +1 -0
- package/lib/module/adapters/virtualizedList.js +69 -0
- package/lib/module/adapters/virtualizedList.js.map +1 -0
- package/lib/module/components/DndProvider.js +1144 -0
- package/lib/module/components/DndProvider.js.map +1 -0
- package/lib/module/components/DragHandle.js +65 -0
- package/lib/module/components/DragHandle.js.map +1 -0
- package/lib/module/components/GridController.js +151 -0
- package/lib/module/components/GridController.js.map +1 -0
- package/lib/module/components/GridDragHandle.js +15 -0
- package/lib/module/components/GridDragHandle.js.map +1 -0
- package/lib/module/components/GridZoneView.js +59 -0
- package/lib/module/components/GridZoneView.js.map +1 -0
- package/lib/module/components/SortableGrid.js +305 -0
- package/lib/module/components/SortableGrid.js.map +1 -0
- package/lib/module/components/SortableList.js +714 -0
- package/lib/module/components/SortableList.js.map +1 -0
- package/lib/module/components/dndTypes.js +4 -0
- package/lib/module/components/dndTypes.js.map +1 -0
- package/lib/module/components/gridTypes.js +4 -0
- package/lib/module/components/gridTypes.js.map +1 -0
- package/lib/module/components/handleViewProps.js +13 -0
- package/lib/module/components/handleViewProps.js.map +1 -0
- package/lib/module/contracts.js +4 -0
- package/lib/module/contracts.js.map +1 -0
- package/lib/module/controller/approval.js +98 -0
- package/lib/module/controller/approval.js.map +1 -0
- package/lib/module/controller/coordinatorBase.js +93 -0
- package/lib/module/controller/coordinatorBase.js.map +1 -0
- package/lib/module/controller/dndSession.js +621 -0
- package/lib/module/controller/dndSession.js.map +1 -0
- package/lib/module/controller/dndState.js +103 -0
- package/lib/module/controller/dndState.js.map +1 -0
- package/lib/module/controller/gridAdapter.js +191 -0
- package/lib/module/controller/gridAdapter.js.map +1 -0
- package/lib/module/controller/gridState.js +101 -0
- package/lib/module/controller/gridState.js.map +1 -0
- package/lib/module/controller/locations.js +48 -0
- package/lib/module/controller/locations.js.map +1 -0
- package/lib/module/controller/previewPath.js +73 -0
- package/lib/module/controller/previewPath.js.map +1 -0
- package/lib/module/controller/sessionCore.js +222 -0
- package/lib/module/controller/sessionCore.js.map +1 -0
- package/lib/module/controller/useDndState.js +9 -0
- package/lib/module/controller/useDndState.js.map +1 -0
- package/lib/module/controller/useGridState.js +9 -0
- package/lib/module/controller/useGridState.js.map +1 -0
- package/lib/module/controller/useStoreState.js +15 -0
- package/lib/module/controller/useStoreState.js.map +1 -0
- package/lib/module/defaults.js +7 -0
- package/lib/module/defaults.js.map +1 -0
- package/lib/module/diagnostics.js +16 -0
- package/lib/module/diagnostics.js.map +1 -0
- package/lib/module/engine/gridPlacements.js +54 -0
- package/lib/module/engine/gridPlacements.js.map +1 -0
- package/lib/module/engine/index.js +19 -0
- package/lib/module/engine/index.js.map +1 -0
- package/lib/module/engine/layout.js +36 -0
- package/lib/module/engine/layout.js.map +1 -0
- package/lib/module/engine/layoutMove.js +326 -0
- package/lib/module/engine/layoutMove.js.map +1 -0
- package/lib/module/engine/layoutState.js +344 -0
- package/lib/module/engine/layoutState.js.map +1 -0
- package/lib/module/engine/list.js +172 -0
- package/lib/module/engine/list.js.map +1 -0
- package/lib/module/engine/listIndex.js +125 -0
- package/lib/module/engine/listIndex.js.map +1 -0
- package/lib/module/engine/move.js +216 -0
- package/lib/module/engine/move.js.map +1 -0
- package/lib/module/engine/movementPolicy.js +77 -0
- package/lib/module/engine/movementPolicy.js.map +1 -0
- package/lib/module/engine/orderedTarget.js +71 -0
- package/lib/module/engine/orderedTarget.js.map +1 -0
- package/lib/module/engine/pack.js +30 -0
- package/lib/module/engine/pack.js.map +1 -0
- package/lib/module/engine/rectangles.js +12 -0
- package/lib/module/engine/rectangles.js.map +1 -0
- package/lib/module/engine/sameLayout.js +29 -0
- package/lib/module/engine/sameLayout.js.map +1 -0
- package/lib/module/engine/search.js +159 -0
- package/lib/module/engine/search.js.map +1 -0
- package/lib/module/engine/spatial.js +27 -0
- package/lib/module/engine/spatial.js.map +1 -0
- package/lib/module/engine/spatialAppRotation.js +39 -0
- package/lib/module/engine/spatialAppRotation.js.map +1 -0
- package/lib/module/engine/spatialExchange.js +164 -0
- package/lib/module/engine/spatialExchange.js.map +1 -0
- package/lib/module/engine/spatialInsertion.js +135 -0
- package/lib/module/engine/spatialInsertion.js.map +1 -0
- package/lib/module/engine/spatialPolicy.js +41 -0
- package/lib/module/engine/spatialPolicy.js.map +1 -0
- package/lib/module/engine/spatialRotation.js +48 -0
- package/lib/module/engine/spatialRotation.js.map +1 -0
- package/lib/module/engine/validation.js +205 -0
- package/lib/module/engine/validation.js.map +1 -0
- package/lib/module/gesture/DndGestureGroup.js +268 -0
- package/lib/module/gesture/DndGestureGroup.js.map +1 -0
- package/lib/module/gesture/DndGestureHost.js +32 -0
- package/lib/module/gesture/DndGestureHost.js.map +1 -0
- package/lib/module/gesture/gestureConfig.js +81 -0
- package/lib/module/gesture/gestureConfig.js.map +1 -0
- package/lib/module/gesture/gestureGrouping.js +122 -0
- package/lib/module/gesture/gestureGrouping.js.map +1 -0
- package/lib/module/gesture/gestureHost.js +106 -0
- package/lib/module/gesture/gestureHost.js.map +1 -0
- package/lib/module/index.js +23 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/pointer/dndTarget.js +101 -0
- package/lib/module/pointer/dndTarget.js.map +1 -0
- package/lib/module/pointer/geometry.js +363 -0
- package/lib/module/pointer/geometry.js.map +1 -0
- package/lib/module/pointer/layoutTarget.js +307 -0
- package/lib/module/pointer/layoutTarget.js.map +1 -0
- package/lib/module/pointer/listCellMotion.js +99 -0
- package/lib/module/pointer/listCellMotion.js.map +1 -0
- package/lib/module/pointer/listTarget.js +42 -0
- package/lib/module/pointer/listTarget.js.map +1 -0
- package/lib/module/pointer/motion.js +37 -0
- package/lib/module/pointer/motion.js.map +1 -0
- package/lib/module/runtime/dndPresentation.js +81 -0
- package/lib/module/runtime/dndPresentation.js.map +1 -0
- package/lib/module/runtime/dndRenderStore.js +129 -0
- package/lib/module/runtime/dndRenderStore.js.map +1 -0
- package/lib/module/runtime/dndRuntime.js +135 -0
- package/lib/module/runtime/dndRuntime.js.map +1 -0
- package/lib/module/runtime/dndSettlement.js +77 -0
- package/lib/module/runtime/dndSettlement.js.map +1 -0
- package/lib/module/runtime/gridRuntime.js +37 -0
- package/lib/module/runtime/gridRuntime.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/adapters/coordinates.d.ts +9 -0
- package/lib/typescript/src/adapters/coordinates.d.ts.map +1 -0
- package/lib/typescript/src/adapters/scroll.d.ts +49 -0
- package/lib/typescript/src/adapters/scroll.d.ts.map +1 -0
- package/lib/typescript/src/adapters/virtualizedList.d.ts +22 -0
- package/lib/typescript/src/adapters/virtualizedList.d.ts.map +1 -0
- package/lib/typescript/src/components/DndProvider.d.ts +4 -0
- package/lib/typescript/src/components/DndProvider.d.ts.map +1 -0
- package/lib/typescript/src/components/DragHandle.d.ts +4 -0
- package/lib/typescript/src/components/DragHandle.d.ts.map +1 -0
- package/lib/typescript/src/components/GridController.d.ts +21 -0
- package/lib/typescript/src/components/GridController.d.ts.map +1 -0
- package/lib/typescript/src/components/GridDragHandle.d.ts +8 -0
- package/lib/typescript/src/components/GridDragHandle.d.ts.map +1 -0
- package/lib/typescript/src/components/GridZoneView.d.ts +8 -0
- package/lib/typescript/src/components/GridZoneView.d.ts.map +1 -0
- package/lib/typescript/src/components/SortableGrid.d.ts +4 -0
- package/lib/typescript/src/components/SortableGrid.d.ts.map +1 -0
- package/lib/typescript/src/components/SortableList.d.ts +4 -0
- package/lib/typescript/src/components/SortableList.d.ts.map +1 -0
- package/lib/typescript/src/components/dndTypes.d.ts +94 -0
- package/lib/typescript/src/components/dndTypes.d.ts.map +1 -0
- package/lib/typescript/src/components/gridTypes.d.ts +84 -0
- package/lib/typescript/src/components/gridTypes.d.ts.map +1 -0
- package/lib/typescript/src/components/handleViewProps.d.ts +6 -0
- package/lib/typescript/src/components/handleViewProps.d.ts.map +1 -0
- package/lib/typescript/src/contracts.d.ts +145 -0
- package/lib/typescript/src/contracts.d.ts.map +1 -0
- package/lib/typescript/src/controller/approval.d.ts +66 -0
- package/lib/typescript/src/controller/approval.d.ts.map +1 -0
- package/lib/typescript/src/controller/coordinatorBase.d.ts +37 -0
- package/lib/typescript/src/controller/coordinatorBase.d.ts.map +1 -0
- package/lib/typescript/src/controller/dndSession.d.ts +152 -0
- package/lib/typescript/src/controller/dndSession.d.ts.map +1 -0
- package/lib/typescript/src/controller/dndState.d.ts +27 -0
- package/lib/typescript/src/controller/dndState.d.ts.map +1 -0
- package/lib/typescript/src/controller/gridAdapter.d.ts +44 -0
- package/lib/typescript/src/controller/gridAdapter.d.ts.map +1 -0
- package/lib/typescript/src/controller/gridState.d.ts +18 -0
- package/lib/typescript/src/controller/gridState.d.ts.map +1 -0
- package/lib/typescript/src/controller/locations.d.ts +9 -0
- package/lib/typescript/src/controller/locations.d.ts.map +1 -0
- package/lib/typescript/src/controller/previewPath.d.ts +49 -0
- package/lib/typescript/src/controller/previewPath.d.ts.map +1 -0
- package/lib/typescript/src/controller/sessionCore.d.ts +106 -0
- package/lib/typescript/src/controller/sessionCore.d.ts.map +1 -0
- package/lib/typescript/src/controller/useDndState.d.ts +8 -0
- package/lib/typescript/src/controller/useDndState.d.ts.map +1 -0
- package/lib/typescript/src/controller/useGridState.d.ts +8 -0
- package/lib/typescript/src/controller/useGridState.d.ts.map +1 -0
- package/lib/typescript/src/controller/useStoreState.d.ts +16 -0
- package/lib/typescript/src/controller/useStoreState.d.ts.map +1 -0
- package/lib/typescript/src/defaults.d.ts +5 -0
- package/lib/typescript/src/defaults.d.ts.map +1 -0
- package/lib/typescript/src/diagnostics.d.ts +9 -0
- package/lib/typescript/src/diagnostics.d.ts.map +1 -0
- package/lib/typescript/src/engine/gridPlacements.d.ts +22 -0
- package/lib/typescript/src/engine/gridPlacements.d.ts.map +1 -0
- package/lib/typescript/src/engine/index.d.ts +28 -0
- package/lib/typescript/src/engine/index.d.ts.map +1 -0
- package/lib/typescript/src/engine/layout.d.ts +4 -0
- package/lib/typescript/src/engine/layout.d.ts.map +1 -0
- package/lib/typescript/src/engine/layoutMove.d.ts +46 -0
- package/lib/typescript/src/engine/layoutMove.d.ts.map +1 -0
- package/lib/typescript/src/engine/layoutState.d.ts +22 -0
- package/lib/typescript/src/engine/layoutState.d.ts.map +1 -0
- package/lib/typescript/src/engine/list.d.ts +68 -0
- package/lib/typescript/src/engine/list.d.ts.map +1 -0
- package/lib/typescript/src/engine/listIndex.d.ts +32 -0
- package/lib/typescript/src/engine/listIndex.d.ts.map +1 -0
- package/lib/typescript/src/engine/move.d.ts +10 -0
- package/lib/typescript/src/engine/move.d.ts.map +1 -0
- package/lib/typescript/src/engine/movementPolicy.d.ts +34 -0
- package/lib/typescript/src/engine/movementPolicy.d.ts.map +1 -0
- package/lib/typescript/src/engine/orderedTarget.d.ts +32 -0
- package/lib/typescript/src/engine/orderedTarget.d.ts.map +1 -0
- package/lib/typescript/src/engine/pack.d.ts +3 -0
- package/lib/typescript/src/engine/pack.d.ts.map +1 -0
- package/lib/typescript/src/engine/rectangles.d.ts +9 -0
- package/lib/typescript/src/engine/rectangles.d.ts.map +1 -0
- package/lib/typescript/src/engine/sameLayout.d.ts +4 -0
- package/lib/typescript/src/engine/sameLayout.d.ts.map +1 -0
- package/lib/typescript/src/engine/search.d.ts +28 -0
- package/lib/typescript/src/engine/search.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatial.d.ts +16 -0
- package/lib/typescript/src/engine/spatial.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatialAppRotation.d.ts +4 -0
- package/lib/typescript/src/engine/spatialAppRotation.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatialExchange.d.ts +5 -0
- package/lib/typescript/src/engine/spatialExchange.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatialInsertion.d.ts +5 -0
- package/lib/typescript/src/engine/spatialInsertion.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatialPolicy.d.ts +9 -0
- package/lib/typescript/src/engine/spatialPolicy.d.ts.map +1 -0
- package/lib/typescript/src/engine/spatialRotation.d.ts +8 -0
- package/lib/typescript/src/engine/spatialRotation.d.ts.map +1 -0
- package/lib/typescript/src/engine/validation.d.ts +9 -0
- package/lib/typescript/src/engine/validation.d.ts.map +1 -0
- package/lib/typescript/src/gesture/DndGestureGroup.d.ts +33 -0
- package/lib/typescript/src/gesture/DndGestureGroup.d.ts.map +1 -0
- package/lib/typescript/src/gesture/DndGestureHost.d.ts +12 -0
- package/lib/typescript/src/gesture/DndGestureHost.d.ts.map +1 -0
- package/lib/typescript/src/gesture/gestureConfig.d.ts +15 -0
- package/lib/typescript/src/gesture/gestureConfig.d.ts.map +1 -0
- package/lib/typescript/src/gesture/gestureGrouping.d.ts +66 -0
- package/lib/typescript/src/gesture/gestureGrouping.d.ts.map +1 -0
- package/lib/typescript/src/gesture/gestureHost.d.ts +23 -0
- package/lib/typescript/src/gesture/gestureHost.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +38 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/pointer/dndTarget.d.ts +14 -0
- package/lib/typescript/src/pointer/dndTarget.d.ts.map +1 -0
- package/lib/typescript/src/pointer/geometry.d.ts +28 -0
- package/lib/typescript/src/pointer/geometry.d.ts.map +1 -0
- package/lib/typescript/src/pointer/layoutTarget.d.ts +43 -0
- package/lib/typescript/src/pointer/layoutTarget.d.ts.map +1 -0
- package/lib/typescript/src/pointer/listCellMotion.d.ts +43 -0
- package/lib/typescript/src/pointer/listCellMotion.d.ts.map +1 -0
- package/lib/typescript/src/pointer/listTarget.d.ts +7 -0
- package/lib/typescript/src/pointer/listTarget.d.ts.map +1 -0
- package/lib/typescript/src/pointer/motion.d.ts +20 -0
- package/lib/typescript/src/pointer/motion.d.ts.map +1 -0
- package/lib/typescript/src/runtime/dndPresentation.d.ts +37 -0
- package/lib/typescript/src/runtime/dndPresentation.d.ts.map +1 -0
- package/lib/typescript/src/runtime/dndRenderStore.d.ts +46 -0
- package/lib/typescript/src/runtime/dndRenderStore.d.ts.map +1 -0
- package/lib/typescript/src/runtime/dndRuntime.d.ts +138 -0
- package/lib/typescript/src/runtime/dndRuntime.d.ts.map +1 -0
- package/lib/typescript/src/runtime/dndSettlement.d.ts +18 -0
- package/lib/typescript/src/runtime/dndSettlement.d.ts.map +1 -0
- package/lib/typescript/src/runtime/gridRuntime.d.ts +54 -0
- package/lib/typescript/src/runtime/gridRuntime.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +180 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +136 -0
- package/src/adapters/coordinates.ts +181 -0
- package/src/adapters/scroll.ts +147 -0
- package/src/adapters/virtualizedList.ts +112 -0
- package/src/components/DndProvider.tsx +1836 -0
- package/src/components/DragHandle.tsx +89 -0
- package/src/components/GridController.tsx +213 -0
- package/src/components/GridDragHandle.tsx +11 -0
- package/src/components/GridZoneView.tsx +57 -0
- package/src/components/SortableGrid.tsx +449 -0
- package/src/components/SortableList.tsx +1028 -0
- package/src/components/dndTypes.ts +102 -0
- package/src/components/gridTypes.ts +90 -0
- package/src/components/handleViewProps.ts +35 -0
- package/src/contracts.ts +149 -0
- package/src/controller/approval.ts +179 -0
- package/src/controller/coordinatorBase.ts +118 -0
- package/src/controller/dndSession.ts +1058 -0
- package/src/controller/dndState.ts +198 -0
- package/src/controller/gridAdapter.ts +268 -0
- package/src/controller/gridState.ts +187 -0
- package/src/controller/locations.ts +67 -0
- package/src/controller/previewPath.ts +90 -0
- package/src/controller/sessionCore.ts +390 -0
- package/src/controller/useDndState.ts +26 -0
- package/src/controller/useGridState.ts +22 -0
- package/src/controller/useStoreState.ts +27 -0
- package/src/defaults.ts +4 -0
- package/src/diagnostics.ts +23 -0
- package/src/engine/gridPlacements.ts +85 -0
- package/src/engine/index.ts +99 -0
- package/src/engine/layout.ts +29 -0
- package/src/engine/layoutMove.ts +401 -0
- package/src/engine/layoutState.ts +490 -0
- package/src/engine/list.ts +307 -0
- package/src/engine/listIndex.ts +174 -0
- package/src/engine/move.ts +274 -0
- package/src/engine/movementPolicy.ts +151 -0
- package/src/engine/orderedTarget.ts +131 -0
- package/src/engine/pack.ts +24 -0
- package/src/engine/rectangles.ts +18 -0
- package/src/engine/sameLayout.ts +50 -0
- package/src/engine/search.ts +174 -0
- package/src/engine/spatial.ts +36 -0
- package/src/engine/spatialAppRotation.ts +53 -0
- package/src/engine/spatialExchange.ts +212 -0
- package/src/engine/spatialInsertion.ts +157 -0
- package/src/engine/spatialPolicy.ts +48 -0
- package/src/engine/spatialRotation.ts +56 -0
- package/src/engine/validation.ts +358 -0
- package/src/gesture/DndGestureGroup.tsx +357 -0
- package/src/gesture/DndGestureHost.tsx +50 -0
- package/src/gesture/gestureConfig.ts +123 -0
- package/src/gesture/gestureGrouping.ts +210 -0
- package/src/gesture/gestureHost.tsx +163 -0
- package/src/index.ts +162 -0
- package/src/pointer/dndTarget.ts +213 -0
- package/src/pointer/geometry.ts +584 -0
- package/src/pointer/layoutTarget.ts +515 -0
- package/src/pointer/listCellMotion.ts +174 -0
- package/src/pointer/listTarget.ts +56 -0
- package/src/pointer/motion.ts +66 -0
- package/src/runtime/dndPresentation.ts +113 -0
- package/src/runtime/dndRenderStore.ts +246 -0
- package/src/runtime/dndRuntime.ts +311 -0
- package/src/runtime/dndSettlement.ts +117 -0
- package/src/runtime/gridRuntime.ts +73 -0
- package/src/types.ts +189 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["samePlacement","computeValidatedLayoutMove","validateLayoutState","isCellSpan","isPositiveInteger","isRecord","DEFAULT_SEARCH_BUDGET","resolveGridMovementPolicy","validateGridMovementPolicy","respondToValidatedDndProposal","now","reportCallbackError","reportFailure","layoutLocation","sameLayoutLocation","PreviewPath","SessionCore","validatedDecision","instanceCounter","layoutKey","value","JSON","stringify","revision","items","map","item","id","sort","zones","zone","kind","orientation","itemIds","rows","columns","placements","itemId","position","row","col","span","cols","placement","a","b","String","localeCompare","sameTarget","first","second","zoneId","index","samePreviewStructure","structure","Object","is","getPrototypeOf","keys","Reflect","ownKeys","otherKeys","length","every","key","getOwnPropertyDescriptor","enumerable","child","test","sameVisibleSnapshot","settingsKey","options","searchBudget","responseTimeoutMs","movementPolicy","copyMovementPolicy","policy","resolved","freeze","candidateOrder","pointer","copyGridItemLayout","undefined","checkOptions","checked","issues","valid","push","budgetValid","timeoutValid","code","message","disabled","onChange","some","callback","layoutValid","error","rebaseLayoutState","committed","sameLayoutZones","Map","other","get","match","relativeToCommitted","from","result","changed","Number","MAX_SAFE_INTEGER","status","DndSessionCoordinator","instanceId","sessionCounter","validationNotification","previewInputVersion","operationVersion","constructor","lastValidValue","displayValue","candidate","phase","sessionId","sourceZoneId","targetZoneId","target","seq","validity","gridItemLayouts","failureReason","lastLayoutKey","batchStarted","diagnosticObserver","onDiagnostic","commit","batch","disposed","previousValue","layoutChanged","canDrop","update","session","settingsChanged","getGridItemLayout","snapshot","response","proposalResponse","matches","baseRevision","accepted","deadline","settle","interrupt","proposalKey","cancelWith","notification","onValidationError","start","source","find","includes","base","gridSource","indexOf","path","gridItemLayoutErrors","resolving","previewSeq","descriptor","copied","set","onDragStart","event","requestTarget","to","acceptsRequest","refresh","lifecycle","inputVersion","previous","previousChanged","calculate","batchDepth","restore","release","final","reset","calculateCandidate","location","isSpatial","precheck","has","compute","baseline","timed","cumulative","gridItem","computed","attempts","relative","keepsPreview","prepareProposal","askPolicy","_session","_committed","proposal","allowed","policyFailed","revalidate","showCandidate","showFailure","failure","keepPreview","expectedPhase","sessionEnded","finishUnchanged","finish","outcome","registerProposal","armTimer","emitChange","changeFailed","armDeadline","reason","policyReason","cancel","clearDeadline","onDragEnd","dispose"],"sourceRoot":"../../../src","sources":["controller/dndSession.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { validateLayoutState } from "../engine/layoutState.js";
|
|
4
|
+
import { isCellPosition, isRecord } from "../engine/validation.js";
|
|
5
|
+
import { createApprovalStore, respondToProposal } from "./approval.js";
|
|
6
|
+
import { layoutLocation, sameLayoutLocation } from "./locations.js";
|
|
7
|
+
function isLocation(value) {
|
|
8
|
+
if (!isRecord(value) || typeof value.zoneId !== 'string') return false;
|
|
9
|
+
return value.kind === 'list' ? typeof value.index === 'number' && Number.isSafeInteger(value.index) && value.index >= 0 : value.kind === 'grid' && isCellPosition(value.position) && value.position.row >= 0 && value.position.col >= 0;
|
|
10
|
+
}
|
|
11
|
+
function issues(value) {
|
|
12
|
+
const checked = validateLayoutState(value);
|
|
13
|
+
return checked.valid ? null : checked.issues;
|
|
14
|
+
}
|
|
15
|
+
function layoutAdapter() {
|
|
16
|
+
return {
|
|
17
|
+
validateCurrent: issues,
|
|
18
|
+
validateCandidate: issues,
|
|
19
|
+
issue: message => ({
|
|
20
|
+
code: 'invalid-structure',
|
|
21
|
+
message
|
|
22
|
+
}),
|
|
23
|
+
isLocation,
|
|
24
|
+
location: layoutLocation,
|
|
25
|
+
sameLocation: sameLayoutLocation,
|
|
26
|
+
hasDestinationZone: (value, to) => value.zones.some(zone => zone.id === to.zoneId && zone.kind === to.kind),
|
|
27
|
+
zonesPreserved: (current, candidate) => {
|
|
28
|
+
const zones = new Map(current.zones.map(zone => [zone.id, zone]));
|
|
29
|
+
return candidate.zones.length === zones.size && candidate.zones.every(zone => {
|
|
30
|
+
const original = zones.get(zone.id);
|
|
31
|
+
return original !== undefined && original.kind === zone.kind && (zone.kind !== 'list' || original.kind !== 'list' || zone.orientation === original.orientation) && (zone.kind !== 'grid' || original.kind !== 'grid' || zone.rows === original.rows && zone.columns === original.columns && zone.itemSpan?.rows === original.itemSpan?.rows && zone.itemSpan?.cols === original.itemSpan?.cols);
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
// computeLayoutMove reuses the baseline items array; only a replaced array
|
|
35
|
+
// needs the per-item identity check.
|
|
36
|
+
itemsPreserved: (current, candidate) => {
|
|
37
|
+
if (candidate.items === current.items) return true;
|
|
38
|
+
const items = new Map(current.items.map(item => [item.id, item]));
|
|
39
|
+
return candidate.items.length === items.size && candidate.items.every(item => items.get(item.id) === item);
|
|
40
|
+
},
|
|
41
|
+
messages: {
|
|
42
|
+
zones: 'A movement must preserve zone IDs, kinds, orientations and grid dimensions.',
|
|
43
|
+
items: 'A movement must preserve every caller-owned item object and its data.',
|
|
44
|
+
destination: 'The destination must match the item location in the complete candidate.'
|
|
45
|
+
},
|
|
46
|
+
accept: (current, candidate, response) => ({
|
|
47
|
+
...candidate,
|
|
48
|
+
items: current.items,
|
|
49
|
+
proposalResponse: response
|
|
50
|
+
})
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Validate the complete atomic proposal before applying a matching revision response. */
|
|
55
|
+
export function respondToDndProposal(current, proposal, accepted) {
|
|
56
|
+
return respondToProposal(layoutAdapter(), current, proposal, accepted, true);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Internal entry for a caller that has already validated `current` and holds
|
|
61
|
+
* it immutably since (the session keeps its committed value). The proposal and
|
|
62
|
+
* its complete candidate are still checked in full.
|
|
63
|
+
*/
|
|
64
|
+
export function respondToValidatedDndProposal(current, proposal, accepted) {
|
|
65
|
+
return respondToProposal(layoutAdapter(), current, proposal, accepted, false);
|
|
66
|
+
}
|
|
67
|
+
function assertValid(value) {
|
|
68
|
+
const checked = validateLayoutState(value);
|
|
69
|
+
if (!checked.valid) throw new TypeError(checked.issues.map(issue => issue.message).join(' '));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** The same synchronous approval path for React state and external stores. */
|
|
73
|
+
export function createDndStateStore(initialValue) {
|
|
74
|
+
assertValid(initialValue);
|
|
75
|
+
const store = createApprovalStore({
|
|
76
|
+
revision: initialValue.revision,
|
|
77
|
+
items: initialValue.items,
|
|
78
|
+
zones: initialValue.zones
|
|
79
|
+
}, respondToDndProposal);
|
|
80
|
+
return {
|
|
81
|
+
getSnapshot: store.getSnapshot,
|
|
82
|
+
subscribe: store.subscribe,
|
|
83
|
+
onChange: (next, proposal) => {
|
|
84
|
+
// The callback carries one complete proposal; two different candidates are ambiguous.
|
|
85
|
+
if (next !== proposal.value) return;
|
|
86
|
+
store.respond(proposal, true);
|
|
87
|
+
},
|
|
88
|
+
setValue: update => {
|
|
89
|
+
const value = store.getSnapshot();
|
|
90
|
+
const next = typeof update === 'function' ? update(value) : update;
|
|
91
|
+
if (next === value) return;
|
|
92
|
+
assertValid(next);
|
|
93
|
+
if (value.revision === Number.MAX_SAFE_INTEGER) throw new RangeError('Layout revision is exhausted.');
|
|
94
|
+
store.publish({
|
|
95
|
+
revision: value.revision + 1,
|
|
96
|
+
items: next.items,
|
|
97
|
+
zones: next.zones
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
respond: store.respond
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=dndState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["validateLayoutState","isCellPosition","isRecord","createApprovalStore","respondToProposal","layoutLocation","sameLayoutLocation","isLocation","value","zoneId","kind","index","Number","isSafeInteger","position","row","col","issues","checked","valid","layoutAdapter","validateCurrent","validateCandidate","issue","message","code","location","sameLocation","hasDestinationZone","to","zones","some","zone","id","zonesPreserved","current","candidate","Map","map","length","size","every","original","get","undefined","orientation","rows","columns","itemSpan","cols","itemsPreserved","items","item","messages","destination","accept","response","proposalResponse","respondToDndProposal","proposal","accepted","respondToValidatedDndProposal","assertValid","TypeError","join","createDndStateStore","initialValue","store","revision","getSnapshot","subscribe","onChange","next","respond","setValue","update","MAX_SAFE_INTEGER","RangeError","publish"],"sourceRoot":"../../../src","sources":["controller/dndState.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { orderedSlots, slotIndex, slotPosition } from "../engine/gridPlacements.js";
|
|
4
|
+
import { fromGridValue } from "../engine/layoutState.js";
|
|
5
|
+
import { hasSameLayout } from "../engine/sameLayout.js";
|
|
6
|
+
import { validateValue } from "../engine/validation.js";
|
|
7
|
+
/**
|
|
8
|
+
* Maps the `GridValue` API of `GridController` onto the layout-state API of
|
|
9
|
+
* the shared provider: values, locations, changes, end events and validation
|
|
10
|
+
* issues. Every function is pure; the component keeps only React state.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** The grid API's location for a layout location; ordered grids use slot indices. */
|
|
14
|
+
export function toItemLocation(state, location) {
|
|
15
|
+
if (location.kind === 'list') return {
|
|
16
|
+
zoneId: location.zoneId,
|
|
17
|
+
strategy: 'ordered',
|
|
18
|
+
index: location.index
|
|
19
|
+
};
|
|
20
|
+
const zone = state.zones.find(entry => entry.id === location.zoneId);
|
|
21
|
+
if (zone?.kind === 'grid' && zone.itemSpan) {
|
|
22
|
+
const slots = orderedSlots(zone, zone.itemSpan);
|
|
23
|
+
const index = slotIndex(location.position, zone.itemSpan, slots.perRow);
|
|
24
|
+
if (index !== null) return {
|
|
25
|
+
zoneId: location.zoneId,
|
|
26
|
+
strategy: 'ordered',
|
|
27
|
+
index
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
zoneId: location.zoneId,
|
|
32
|
+
strategy: 'spatial',
|
|
33
|
+
position: {
|
|
34
|
+
row: location.position.row,
|
|
35
|
+
col: location.position.col
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The layout location for a grid API location, or null when it names no slot. */
|
|
41
|
+
export function toLayoutLocation(state, location) {
|
|
42
|
+
const zone = state.zones.find(entry => entry.id === location.zoneId);
|
|
43
|
+
if (!zone) return null;
|
|
44
|
+
if (zone.kind === 'list') return location.strategy === 'ordered' ? {
|
|
45
|
+
kind: 'list',
|
|
46
|
+
zoneId: zone.id,
|
|
47
|
+
index: location.index
|
|
48
|
+
} : null;
|
|
49
|
+
if (location.strategy === 'spatial') return zone.itemSpan ? null : {
|
|
50
|
+
kind: 'grid',
|
|
51
|
+
zoneId: zone.id,
|
|
52
|
+
position: {
|
|
53
|
+
row: location.position.row,
|
|
54
|
+
col: location.position.col
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (!zone.itemSpan || !Number.isSafeInteger(location.index) || location.index < 0) return null;
|
|
58
|
+
const slots = orderedSlots(zone, zone.itemSpan);
|
|
59
|
+
if (slots.perRow === 0 || location.index >= slots.perRow * slots.rows) return null;
|
|
60
|
+
return {
|
|
61
|
+
kind: 'grid',
|
|
62
|
+
zoneId: zone.id,
|
|
63
|
+
position: slotPosition(location.index, zone.itemSpan, slots.perRow)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** The legacy change record of a proposal; the base revision is optional API. */
|
|
68
|
+
export function gridChangeOf(proposal, includeBaseRevision) {
|
|
69
|
+
return {
|
|
70
|
+
sessionId: proposal.sessionId,
|
|
71
|
+
...(includeBaseRevision ? {
|
|
72
|
+
baseRevision: proposal.baseRevision
|
|
73
|
+
} : {}),
|
|
74
|
+
itemId: proposal.itemId,
|
|
75
|
+
from: toItemLocation(proposal.value, proposal.from),
|
|
76
|
+
to: toItemLocation(proposal.value, proposal.to)
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function gridEndEvent(event, includeBaseRevision) {
|
|
80
|
+
const base = {
|
|
81
|
+
sessionId: event.sessionId,
|
|
82
|
+
itemId: event.itemId,
|
|
83
|
+
sourceZoneId: event.sourceZoneId,
|
|
84
|
+
...(event.error === undefined ? {} : {
|
|
85
|
+
error: event.error
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
if (event.outcome === 'unchanged') return {
|
|
89
|
+
...base,
|
|
90
|
+
outcome: 'unchanged'
|
|
91
|
+
};
|
|
92
|
+
if (event.outcome === 'cancelled') return {
|
|
93
|
+
...base,
|
|
94
|
+
outcome: 'cancelled',
|
|
95
|
+
reason: event.reason,
|
|
96
|
+
...(event.targetZoneId === undefined ? {} : {
|
|
97
|
+
targetZoneId: event.targetZoneId
|
|
98
|
+
}),
|
|
99
|
+
...(event.policyReason === undefined ? {} : {
|
|
100
|
+
policyReason: event.policyReason
|
|
101
|
+
})
|
|
102
|
+
};
|
|
103
|
+
const change = gridChangeOf(event.proposal, includeBaseRevision);
|
|
104
|
+
return event.response === 'interrupted' ? {
|
|
105
|
+
...base,
|
|
106
|
+
outcome: 'proposed',
|
|
107
|
+
change,
|
|
108
|
+
targetZoneId: event.targetZoneId,
|
|
109
|
+
response: 'interrupted',
|
|
110
|
+
reason: event.reason
|
|
111
|
+
} : {
|
|
112
|
+
...base,
|
|
113
|
+
outcome: 'proposed',
|
|
114
|
+
change,
|
|
115
|
+
targetZoneId: event.targetZoneId,
|
|
116
|
+
response: event.response
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const GRID_CODES = new Set(['invalid-structure', 'duplicate-id', 'invalid-dimension', 'invalid-span', 'invalid-placement', 'missing-item-span', 'span-mismatch', 'invalid-position', 'out-of-bounds', 'overlap', 'capacity-exceeded', 'invalid-budget', 'invalid-geometry', 'invalid-configuration']);
|
|
120
|
+
|
|
121
|
+
/** Layout-state issues in the grid API's vocabulary. */
|
|
122
|
+
export function gridIssues(issues) {
|
|
123
|
+
return issues.map(issue => ({
|
|
124
|
+
code: GRID_CODES.has(issue.code) ? issue.code : 'invalid-structure',
|
|
125
|
+
message: issue.message,
|
|
126
|
+
...(issue.zoneId === undefined ? {} : {
|
|
127
|
+
zoneId: issue.zoneId
|
|
128
|
+
}),
|
|
129
|
+
...(issue.itemId === undefined ? {} : {
|
|
130
|
+
itemId: issue.itemId
|
|
131
|
+
})
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Convert a committed grid value for the provider. Values without a revision
|
|
136
|
+
* receive a synthetic one that advances whenever the layout changes, so the
|
|
137
|
+
* provider's revision protocol still detects edits; a response that omits its
|
|
138
|
+
* base revision is attributed to the proposal it answers. Item objects whose
|
|
139
|
+
* data is unchanged keep their identity, so cells and the approval reducer see
|
|
140
|
+
* stable objects; acceptance itself compares layout and revision only, so an
|
|
141
|
+
* owner may rebuild an item's data for its new zone.
|
|
142
|
+
*/
|
|
143
|
+
export function convertGridValue(value, previous, pendingBaseRevision) {
|
|
144
|
+
const checked = validateValue(value);
|
|
145
|
+
const revision = value.revision ?? (previous === null ? 0 : hasSameLayout(previous.value, value) ? previous.revision : previous.revision + 1);
|
|
146
|
+
if (!checked.valid) return {
|
|
147
|
+
state: null,
|
|
148
|
+
issues: checked.issues,
|
|
149
|
+
revision
|
|
150
|
+
};
|
|
151
|
+
const converted = fromGridValue(value, revision);
|
|
152
|
+
if (!converted.valid) return {
|
|
153
|
+
state: null,
|
|
154
|
+
issues: gridIssues(converted.issues),
|
|
155
|
+
revision
|
|
156
|
+
};
|
|
157
|
+
const state = converted.value;
|
|
158
|
+
if (previous?.state) state.items = reuseItems(state.items, previous.state.items);
|
|
159
|
+
const response = value.proposalResponse;
|
|
160
|
+
return {
|
|
161
|
+
revision,
|
|
162
|
+
issues: [],
|
|
163
|
+
state: response ? {
|
|
164
|
+
...state,
|
|
165
|
+
proposalResponse: {
|
|
166
|
+
sessionId: response.sessionId,
|
|
167
|
+
accepted: response.accepted,
|
|
168
|
+
baseRevision: response.baseRevision ?? pendingBaseRevision ?? revision
|
|
169
|
+
}
|
|
170
|
+
} : state
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function reuseItems(items, previous) {
|
|
174
|
+
const known = new Map(previous.map(item => [item.id, item]));
|
|
175
|
+
let same = items.length === previous.length;
|
|
176
|
+
const reused = items.map((item, index) => {
|
|
177
|
+
const before = known.get(item.id);
|
|
178
|
+
const kept = before && Object.is(before.data, item.data) ? before : item;
|
|
179
|
+
if (kept !== previous[index]) same = false;
|
|
180
|
+
return kept;
|
|
181
|
+
});
|
|
182
|
+
return same ? previous : reused;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** The caller's own item objects by ID, so render callbacks see stable identities. */
|
|
186
|
+
export function gridItemIndex(value) {
|
|
187
|
+
const items = new Map();
|
|
188
|
+
for (const zone of value.zones) for (const item of zone.items) items.set(item.id, item);
|
|
189
|
+
return items;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=gridAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["orderedSlots","slotIndex","slotPosition","fromGridValue","hasSameLayout","validateValue","toItemLocation","state","location","kind","zoneId","strategy","index","zone","zones","find","entry","id","itemSpan","slots","position","perRow","row","col","toLayoutLocation","Number","isSafeInteger","rows","gridChangeOf","proposal","includeBaseRevision","sessionId","baseRevision","itemId","from","value","to","gridEndEvent","event","base","sourceZoneId","error","undefined","outcome","reason","targetZoneId","policyReason","change","response","GRID_CODES","Set","gridIssues","issues","map","issue","code","has","message","convertGridValue","previous","pendingBaseRevision","checked","revision","valid","converted","items","reuseItems","proposalResponse","accepted","known","Map","item","same","length","reused","before","get","kept","Object","is","data","gridItemIndex","set"],"sourceRoot":"../../../src","sources":["controller/gridAdapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { isCellPosition, isRecord, validateValue } from "../engine/validation.js";
|
|
4
|
+
import { createApprovalStore, respondToProposal } from "./approval.js";
|
|
5
|
+
import { itemLocation, sameItemLocation } from "./locations.js";
|
|
6
|
+
function isLocation(value) {
|
|
7
|
+
if (!isRecord(value) || typeof value.zoneId !== 'string') return false;
|
|
8
|
+
return value.strategy === 'ordered' ? typeof value.index === 'number' && Number.isSafeInteger(value.index) && value.index >= 0 : value.strategy === 'spatial' && isCellPosition(value.position) && value.position.row >= 0 && value.position.col >= 0;
|
|
9
|
+
}
|
|
10
|
+
function issues(value) {
|
|
11
|
+
const checked = validateValue(value);
|
|
12
|
+
return checked.valid ? null : checked.issues;
|
|
13
|
+
}
|
|
14
|
+
function gridAdapter() {
|
|
15
|
+
return {
|
|
16
|
+
validateCurrent: current => issues(current) ?? (!Number.isSafeInteger(current.revision) || current.revision < 0 ? [{
|
|
17
|
+
code: 'invalid-structure',
|
|
18
|
+
message: 'Current grid state must have a non-negative safe integer revision.'
|
|
19
|
+
}] : null),
|
|
20
|
+
validateCandidate: issues,
|
|
21
|
+
issue: message => ({
|
|
22
|
+
code: 'invalid-structure',
|
|
23
|
+
message
|
|
24
|
+
}),
|
|
25
|
+
isLocation,
|
|
26
|
+
location: itemLocation,
|
|
27
|
+
sameLocation: sameItemLocation,
|
|
28
|
+
hasDestinationZone: (value, to) => value.zones.some(zone => zone.id === to.zoneId && zone.strategy === to.strategy),
|
|
29
|
+
zonesPreserved: (current, candidate) => {
|
|
30
|
+
const zones = new Map(current.zones.map(zone => [zone.id, zone]));
|
|
31
|
+
return candidate.zones.length === zones.size && candidate.zones.every(zone => {
|
|
32
|
+
const original = zones.get(zone.id);
|
|
33
|
+
return original !== undefined && original.strategy === zone.strategy && original.rows === zone.rows && original.columns === zone.columns && (original.strategy !== 'ordered' || zone.strategy !== 'ordered' || original.itemSpan.rows === zone.itemSpan.rows && original.itemSpan.cols === zone.itemSpan.cols);
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
// A movement may change layout, never the caller's item set or opaque data.
|
|
37
|
+
itemsPreserved: (current, candidate) => {
|
|
38
|
+
const items = new Map(current.zones.flatMap(zone => zone.items).map(item => [item.id, item]));
|
|
39
|
+
const proposed = candidate.zones.flatMap(zone => zone.items);
|
|
40
|
+
return proposed.length === items.size && proposed.every(item => {
|
|
41
|
+
const original = items.get(item.id);
|
|
42
|
+
return original !== undefined && Object.is(original.data, item.data) && original.span.rows === item.span.rows && original.span.cols === item.span.cols && original.placement === item.placement;
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
messages: {
|
|
46
|
+
zones: 'A grid proposal must preserve zone IDs, strategies, dimensions and ordered item spans.',
|
|
47
|
+
items: 'A grid proposal must preserve all item IDs, spans, placement policies and caller data.',
|
|
48
|
+
destination: 'The proposed destination must match the item location in the complete candidate.'
|
|
49
|
+
},
|
|
50
|
+
accept: (_current, candidate, response) => ({
|
|
51
|
+
...candidate,
|
|
52
|
+
proposalResponse: response
|
|
53
|
+
})
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** A response only changes the exact revision on which the complete proposal was based. */
|
|
58
|
+
export function respondToGridProposal(current, proposal, accepted) {
|
|
59
|
+
return respondToProposal(gridAdapter(), current, proposal, accepted, true);
|
|
60
|
+
}
|
|
61
|
+
function assertValid(value) {
|
|
62
|
+
const result = validateValue(value);
|
|
63
|
+
if (!result.valid) throw new TypeError(result.issues.map(issue => issue.message).join(' '));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** React-independent store; the state hook and external stores share the response reducer. */
|
|
67
|
+
export function createGridStateStore(initialValue) {
|
|
68
|
+
assertValid(initialValue);
|
|
69
|
+
const store = createApprovalStore({
|
|
70
|
+
zones: initialValue.zones,
|
|
71
|
+
revision: initialValue.revision ?? 0
|
|
72
|
+
}, respondToGridProposal);
|
|
73
|
+
return {
|
|
74
|
+
getSnapshot: store.getSnapshot,
|
|
75
|
+
subscribe: store.subscribe,
|
|
76
|
+
onChange: (next, change) => {
|
|
77
|
+
if (change.baseRevision === undefined || next.revision === undefined) return;
|
|
78
|
+
store.respond({
|
|
79
|
+
...change,
|
|
80
|
+
baseRevision: change.baseRevision,
|
|
81
|
+
value: {
|
|
82
|
+
...next,
|
|
83
|
+
revision: next.revision
|
|
84
|
+
}
|
|
85
|
+
}, true);
|
|
86
|
+
},
|
|
87
|
+
setValue: update => {
|
|
88
|
+
const value = store.getSnapshot();
|
|
89
|
+
const next = typeof update === 'function' ? update(value) : update;
|
|
90
|
+
if (next === value) return;
|
|
91
|
+
assertValid(next);
|
|
92
|
+
if (value.revision === Number.MAX_SAFE_INTEGER) throw new RangeError('Grid revision is exhausted.');
|
|
93
|
+
store.publish({
|
|
94
|
+
zones: next.zones,
|
|
95
|
+
revision: value.revision + 1
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
respond: store.respond
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=gridState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isCellPosition","isRecord","validateValue","createApprovalStore","respondToProposal","itemLocation","sameItemLocation","isLocation","value","zoneId","strategy","index","Number","isSafeInteger","position","row","col","issues","checked","valid","gridAdapter","validateCurrent","current","revision","code","message","validateCandidate","issue","location","sameLocation","hasDestinationZone","to","zones","some","zone","id","zonesPreserved","candidate","Map","map","length","size","every","original","get","undefined","rows","columns","itemSpan","cols","itemsPreserved","items","flatMap","item","proposed","Object","is","data","span","placement","messages","destination","accept","_current","response","proposalResponse","respondToGridProposal","proposal","accepted","assertValid","result","TypeError","join","createGridStateStore","initialValue","store","getSnapshot","subscribe","onChange","next","change","baseRevision","respond","setValue","update","MAX_SAFE_INTEGER","RangeError","publish"],"sourceRoot":"../../../src","sources":["controller/gridState.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Where a validated grid value places the item, or null when it is absent. */
|
|
4
|
+
export function itemLocation(value, itemId) {
|
|
5
|
+
const zone = value.zones.find(candidate => candidate.items.some(item => item.id === itemId));
|
|
6
|
+
if (!zone) return null;
|
|
7
|
+
const index = zone.items.findIndex(item => item.id === itemId);
|
|
8
|
+
return zone.strategy === 'ordered' ? {
|
|
9
|
+
zoneId: zone.id,
|
|
10
|
+
strategy: 'ordered',
|
|
11
|
+
index
|
|
12
|
+
} : {
|
|
13
|
+
zoneId: zone.id,
|
|
14
|
+
strategy: 'spatial',
|
|
15
|
+
position: zone.items[index].position
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function sameItemLocation(first, second) {
|
|
19
|
+
if (!second || first.zoneId !== second.zoneId) return false;
|
|
20
|
+
return first.strategy === 'ordered' && second.strategy === 'ordered' ? first.index === second.index : first.strategy === 'spatial' && second.strategy === 'spatial' && first.position.row === second.position.row && first.position.col === second.position.col;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Where a validated layout state places the item, or null when it is absent. */
|
|
24
|
+
export function layoutLocation(value, itemId) {
|
|
25
|
+
for (const zone of value.zones) {
|
|
26
|
+
if (zone.kind === 'list') {
|
|
27
|
+
const index = zone.itemIds.indexOf(itemId);
|
|
28
|
+
if (index !== -1) return {
|
|
29
|
+
kind: 'list',
|
|
30
|
+
zoneId: zone.id,
|
|
31
|
+
index
|
|
32
|
+
};
|
|
33
|
+
} else {
|
|
34
|
+
const item = zone.placements.find(placement => placement.itemId === itemId);
|
|
35
|
+
if (item) return {
|
|
36
|
+
kind: 'grid',
|
|
37
|
+
zoneId: zone.id,
|
|
38
|
+
position: item.position
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
export function sameLayoutLocation(first, second) {
|
|
45
|
+
if (!second || first.zoneId !== second.zoneId) return false;
|
|
46
|
+
return first.kind === 'list' && second.kind === 'list' ? first.index === second.index : first.kind === 'grid' && second.kind === 'grid' && first.position.row === second.position.row && first.position.col === second.position.col;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["itemLocation","value","itemId","zone","zones","find","candidate","items","some","item","id","index","findIndex","strategy","zoneId","position","sameItemLocation","first","second","row","col","layoutLocation","kind","itemIds","indexOf","placements","placement","sameLayoutLocation"],"sourceRoot":"../../../src","sources":["controller/locations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Cumulative preview path of one drag session inside one zone.
|
|
5
|
+
*
|
|
6
|
+
* Every valid, permitted candidate the session displays becomes the baseline
|
|
7
|
+
* for the next target in the same zone, so an exchange made on the way stays
|
|
8
|
+
* where the user saw it (moving a widget A → B → C swaps at C against the
|
|
9
|
+
* layout shown at B, as launchers do). Returning to a target visited earlier
|
|
10
|
+
* restores exactly that layout, and the item's committed location always
|
|
11
|
+
* restores the committed layout. The path is dropped whenever the display
|
|
12
|
+
* returns to the committed value: leaving every zone, entering another zone,
|
|
13
|
+
* a rejected or failed candidate, or a candidate equal to the committed layout.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export class PreviewPath {
|
|
17
|
+
steps = [];
|
|
18
|
+
committed = null;
|
|
19
|
+
constructor(sameLocation, /** Re-attach a stored layout to a recommit that changed only item data. */
|
|
20
|
+
rebase) {
|
|
21
|
+
this.sameLocation = sameLocation;
|
|
22
|
+
this.rebase = rebase;
|
|
23
|
+
}
|
|
24
|
+
get length() {
|
|
25
|
+
return this.steps.length;
|
|
26
|
+
}
|
|
27
|
+
reset() {
|
|
28
|
+
this.steps.length = 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Choose the layout a new target builds on, or the earlier step it restores. */
|
|
32
|
+
resolve(committed, origin, target) {
|
|
33
|
+
if (this.sameLocation(target, origin)) {
|
|
34
|
+
this.reset();
|
|
35
|
+
return {
|
|
36
|
+
kind: 'compute',
|
|
37
|
+
base: committed,
|
|
38
|
+
cumulative: false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
this.sync(committed);
|
|
42
|
+
const index = this.steps.findIndex(step => this.sameLocation(step.target, target));
|
|
43
|
+
if (index !== -1) {
|
|
44
|
+
this.steps.length = index + 1;
|
|
45
|
+
return {
|
|
46
|
+
kind: 'restored',
|
|
47
|
+
step: this.steps[index]
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const newest = this.steps[this.steps.length - 1];
|
|
51
|
+
return newest ? {
|
|
52
|
+
kind: 'compute',
|
|
53
|
+
base: newest.value,
|
|
54
|
+
cumulative: true
|
|
55
|
+
} : {
|
|
56
|
+
kind: 'compute',
|
|
57
|
+
base: committed,
|
|
58
|
+
cumulative: false
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Record a displayed candidate that differs from the committed layout. */
|
|
63
|
+
push(committed, step) {
|
|
64
|
+
this.sync(committed);
|
|
65
|
+
this.steps.push(step);
|
|
66
|
+
}
|
|
67
|
+
sync(committed) {
|
|
68
|
+
if (this.committed === committed) return;
|
|
69
|
+
if (this.committed !== null) for (const step of this.steps) step.value = this.rebase(step.value, committed);
|
|
70
|
+
this.committed = committed;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=previewPath.js.map
|