@ankhorage/studio 0.0.7 → 0.0.8

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/studio
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v0.0.6](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v0.0.7](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Standalone Studio authoring package for Ankhorage apps.
9
9
 
@@ -0,0 +1,22 @@
1
+ import type { UiNode } from '@ankhorage/contracts';
2
+ import type { NodePlacement, PlacementKind, StudioComponentMetaRegistry } from './index';
3
+ export interface ValidCanvasDropZoneResolution {
4
+ kind: PlacementKind;
5
+ status: 'valid';
6
+ placement: NodePlacement;
7
+ }
8
+ interface InvalidCanvasDropZoneResolution {
9
+ kind: PlacementKind;
10
+ status: 'invalid';
11
+ reason: string;
12
+ }
13
+ export type CanvasDropZoneResolution = ValidCanvasDropZoneResolution | InvalidCanvasDropZoneResolution;
14
+ export declare function resolveCanvasDropZones(args: {
15
+ root: UiNode;
16
+ targetNodeId: string;
17
+ draggedNode: UiNode;
18
+ componentMeta: StudioComponentMetaRegistry;
19
+ }): readonly CanvasDropZoneResolution[];
20
+ export declare function getValidCanvasDropZones(zones: readonly CanvasDropZoneResolution[]): readonly ValidCanvasDropZoneResolution[];
21
+ export {};
22
+ //# sourceMappingURL=canvasDropZones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasDropZones.d.ts","sourceRoot":"","sources":["../src/canvasDropZones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAGzF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,UAAU,+BAA+B;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAClC,6BAA6B,GAAG,+BAA+B,CAAC;AAIlE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,2BAA2B,CAAC;CAC5C,GAAG,SAAS,wBAAwB,EAAE,CAkCtC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,wBAAwB,EAAE,GACzC,SAAS,6BAA6B,EAAE,CAE1C"}
@@ -0,0 +1,37 @@
1
+ import { resolveInsertPlacement } from './index';
2
+ const DROP_ZONE_KINDS = ['before', 'inside', 'after'];
3
+ export function resolveCanvasDropZones(args) {
4
+ const { root, targetNodeId, draggedNode, componentMeta } = args;
5
+ return DROP_ZONE_KINDS.map((kind) => {
6
+ if (draggedNode.id === targetNodeId) {
7
+ return {
8
+ kind,
9
+ status: 'invalid',
10
+ reason: 'Cannot drop a node onto itself.',
11
+ };
12
+ }
13
+ const placement = resolveInsertPlacement({
14
+ root,
15
+ targetNodeId,
16
+ childType: draggedNode.type,
17
+ componentMeta,
18
+ kind,
19
+ });
20
+ if (!placement.ok) {
21
+ return {
22
+ kind,
23
+ status: 'invalid',
24
+ reason: placement.reason.message,
25
+ };
26
+ }
27
+ return {
28
+ kind,
29
+ status: 'valid',
30
+ placement: placement.placement,
31
+ };
32
+ });
33
+ }
34
+ export function getValidCanvasDropZones(zones) {
35
+ return zones.filter((zone) => zone.status === 'valid');
36
+ }
37
+ //# sourceMappingURL=canvasDropZones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasDropZones.js","sourceRoot":"","sources":["../src/canvasDropZones.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAiBjD,MAAM,eAAe,GAA6B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEhF,MAAM,UAAU,sBAAsB,CAAC,IAKtC;IACC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAEhE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,WAAW,CAAC,EAAE,KAAK,YAAY,EAAE,CAAC;YACpC,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,iCAAiC;aAC1C,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC;YACvC,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,aAAa;YACb,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;aACjC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAA0C;IAE1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;AAChG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "Studio authoring package for Ankhorage apps",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ankhorage/studio#readme",
@@ -28,6 +28,10 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "import": "./dist/index.js"
30
30
  },
31
+ "./canvasDropZones": {
32
+ "types": "./dist/canvasDropZones.d.ts",
33
+ "import": "./dist/canvasDropZones.js"
34
+ },
31
35
  "./manifestState": {
32
36
  "types": "./dist/manifestState.d.ts",
33
37
  "import": "./dist/manifestState.js"