@ankhorage/studio 0.0.11 → 0.0.13
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 +1 -1
- package/dist/canvasDragModel.d.ts +16 -0
- package/dist/canvasDragModel.d.ts.map +1 -0
- package/dist/canvasDragModel.js +27 -0
- package/dist/canvasDragModel.js.map +1 -0
- package/dist/runtimeLocalization.d.ts +25 -0
- package/dist/runtimeLocalization.d.ts.map +1 -0
- package/dist/runtimeLocalization.js +78 -0
- package/dist/runtimeLocalization.js.map +1 -0
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/studio
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Standalone Studio authoring package for Ankhorage apps.
|
|
9
9
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CanvasDropZoneResolution, ValidCanvasDropZoneResolution } from './canvasDropZones';
|
|
2
|
+
export interface StudioCanvasDragPayload {
|
|
3
|
+
kind: 'studio-canvas-node';
|
|
4
|
+
nodeId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CanvasDropZoneSlots {
|
|
7
|
+
validDropZones: readonly ValidCanvasDropZoneResolution[];
|
|
8
|
+
beforeDropZone: ValidCanvasDropZoneResolution | null;
|
|
9
|
+
insideDropZone: ValidCanvasDropZoneResolution | null;
|
|
10
|
+
afterDropZone: ValidCanvasDropZoneResolution | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function createStudioCanvasDragPayload(nodeId: string): StudioCanvasDragPayload;
|
|
13
|
+
export declare function isStudioCanvasDragPayload(value: unknown): value is StudioCanvasDragPayload;
|
|
14
|
+
export declare function isValidCanvasDropZone(zone: CanvasDropZoneResolution): zone is ValidCanvasDropZoneResolution;
|
|
15
|
+
export declare function resolveCanvasDropZoneSlots(zones: readonly CanvasDropZoneResolution[]): CanvasDropZoneSlots;
|
|
16
|
+
//# sourceMappingURL=canvasDragModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasDragModel.d.ts","sourceRoot":"","sources":["../src/canvasDragModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGjG,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzD,cAAc,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACrD,cAAc,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACrD,aAAa,EAAE,6BAA6B,GAAG,IAAI,CAAC;CACrD;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAErF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAM1F;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,wBAAwB,GAC7B,IAAI,IAAI,6BAA6B,CAEvC;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,wBAAwB,EAAE,GACzC,mBAAmB,CASrB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export function createStudioCanvasDragPayload(nodeId) {
|
|
2
|
+
return { kind: 'studio-canvas-node', nodeId };
|
|
3
|
+
}
|
|
4
|
+
export function isStudioCanvasDragPayload(value) {
|
|
5
|
+
if (typeof value !== 'object' || value === null)
|
|
6
|
+
return false;
|
|
7
|
+
if (!('kind' in value) || !('nodeId' in value))
|
|
8
|
+
return false;
|
|
9
|
+
const candidate = value;
|
|
10
|
+
return candidate.kind === 'studio-canvas-node' && typeof candidate.nodeId === 'string';
|
|
11
|
+
}
|
|
12
|
+
export function isValidCanvasDropZone(zone) {
|
|
13
|
+
return zone.status === 'valid';
|
|
14
|
+
}
|
|
15
|
+
export function resolveCanvasDropZoneSlots(zones) {
|
|
16
|
+
const validDropZones = zones.filter(isValidCanvasDropZone);
|
|
17
|
+
return {
|
|
18
|
+
validDropZones,
|
|
19
|
+
beforeDropZone: findDropZoneByKind(validDropZones, 'before'),
|
|
20
|
+
insideDropZone: findDropZoneByKind(validDropZones, 'inside'),
|
|
21
|
+
afterDropZone: findDropZoneByKind(validDropZones, 'after'),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function findDropZoneByKind(zones, kind) {
|
|
25
|
+
return zones.find((zone) => zone.kind === kind) ?? null;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=canvasDragModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasDragModel.js","sourceRoot":"","sources":["../src/canvasDragModel.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,MAAM,SAAS,GAAG,KAA6C,CAAC;IAChE,OAAO,SAAS,CAAC,IAAI,KAAK,oBAAoB,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA8B;IAE9B,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA0C;IAE1C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE3D,OAAO;QACL,cAAc;QACd,cAAc,EAAE,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC5D,cAAc,EAAE,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC5D,aAAa,EAAE,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA+C,EAC/C,IAAmB;IAEnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const STUDIO_LOCALIZED_PROP_PAIRS: readonly [readonly ["i18nKey", "text"], readonly ["titleI18nKey", "title"], readonly ["descriptionI18nKey", "description"], readonly ["eyebrowI18nKey", "eyebrow"], readonly ["labelI18nKey", "label"], readonly ["helperTextI18nKey", "helperText"], readonly ["errorTextI18nKey", "errorText"], readonly ["metaI18nKey", "meta"], readonly ["childrenI18nKey", "children"]];
|
|
2
|
+
export type StudioLocalizedPropPair = (typeof STUDIO_LOCALIZED_PROP_PAIRS)[number];
|
|
3
|
+
export interface StudioRuntimeNodePropsResolverContext {
|
|
4
|
+
node: {
|
|
5
|
+
id: string;
|
|
6
|
+
type: string;
|
|
7
|
+
};
|
|
8
|
+
props: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export type StudioRuntimeNodePropsResolver = (context: StudioRuntimeNodePropsResolverContext) => Record<string, unknown>;
|
|
11
|
+
export interface StudioRuntimeActionHandlerContext {
|
|
12
|
+
action: unknown;
|
|
13
|
+
context: StudioRuntimeNodePropsResolverContext;
|
|
14
|
+
}
|
|
15
|
+
export type StudioRuntimeActionHandlers = Record<string, (context: StudioRuntimeActionHandlerContext) => void>;
|
|
16
|
+
export declare function resolveLocalizedPropValue(args: {
|
|
17
|
+
props: Record<string, unknown>;
|
|
18
|
+
keyProp: string;
|
|
19
|
+
targetProp: string;
|
|
20
|
+
translate: (key: string) => string;
|
|
21
|
+
}): string | undefined;
|
|
22
|
+
export declare function createStudioLocalizationNodePropsResolver(translate: (key: string) => string): StudioRuntimeNodePropsResolver;
|
|
23
|
+
export declare function getSetLanguageLocale(action: unknown): string | undefined;
|
|
24
|
+
export declare function createStudioLocalizationActionHandlers(setActiveLocale: (locale: string) => void): StudioRuntimeActionHandlers;
|
|
25
|
+
//# sourceMappingURL=runtimeLocalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeLocalization.d.ts","sourceRoot":"","sources":["../src/runtimeLocalization.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,+WAU9B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnF,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,qCAAqC,KAC3C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7B,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,qCAAqC,CAAC;CAChD;AAED,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,CAAC,OAAO,EAAE,iCAAiC,KAAK,IAAI,CACrD,CAAC;AAUF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,GAAG,MAAM,GAAG,SAAS,CAkBrB;AAED,wBAAgB,yCAAyC,CACvD,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GACjC,8BAA8B,CAuBhC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiBxE;AAED,wBAAgB,sCAAsC,CACpD,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACxC,2BAA2B,CAS7B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export const STUDIO_LOCALIZED_PROP_PAIRS = [
|
|
2
|
+
['i18nKey', 'text'],
|
|
3
|
+
['titleI18nKey', 'title'],
|
|
4
|
+
['descriptionI18nKey', 'description'],
|
|
5
|
+
['eyebrowI18nKey', 'eyebrow'],
|
|
6
|
+
['labelI18nKey', 'label'],
|
|
7
|
+
['helperTextI18nKey', 'helperText'],
|
|
8
|
+
['errorTextI18nKey', 'errorText'],
|
|
9
|
+
['metaI18nKey', 'meta'],
|
|
10
|
+
['childrenI18nKey', 'children'],
|
|
11
|
+
];
|
|
12
|
+
function isNonEmptyString(value) {
|
|
13
|
+
return typeof value === 'string' && value.length > 0;
|
|
14
|
+
}
|
|
15
|
+
function hasOwnProp(props, key) {
|
|
16
|
+
return Object.prototype.hasOwnProperty.call(props, key);
|
|
17
|
+
}
|
|
18
|
+
export function resolveLocalizedPropValue(args) {
|
|
19
|
+
const { props, keyProp, targetProp, translate } = args;
|
|
20
|
+
const key = props[keyProp];
|
|
21
|
+
if (!isNonEmptyString(key)) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const translated = translate(key);
|
|
25
|
+
if (isNonEmptyString(translated) && translated !== key) {
|
|
26
|
+
return translated;
|
|
27
|
+
}
|
|
28
|
+
if (hasOwnProp(props, targetProp)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return key;
|
|
32
|
+
}
|
|
33
|
+
export function createStudioLocalizationNodePropsResolver(translate) {
|
|
34
|
+
return ({ props }) => {
|
|
35
|
+
let resolvedProps;
|
|
36
|
+
for (const [keyProp, targetProp] of STUDIO_LOCALIZED_PROP_PAIRS) {
|
|
37
|
+
const localizedValue = resolveLocalizedPropValue({
|
|
38
|
+
props,
|
|
39
|
+
keyProp,
|
|
40
|
+
targetProp,
|
|
41
|
+
translate,
|
|
42
|
+
});
|
|
43
|
+
if (localizedValue === undefined) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const nextProps = resolvedProps ?? { ...props };
|
|
47
|
+
nextProps[targetProp] = localizedValue;
|
|
48
|
+
resolvedProps = nextProps;
|
|
49
|
+
}
|
|
50
|
+
return resolvedProps ?? props;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function getSetLanguageLocale(action) {
|
|
54
|
+
if (typeof action !== 'object' || action === null || Array.isArray(action)) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const record = action;
|
|
58
|
+
if (record.type !== 'setLanguage') {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const { payload } = record;
|
|
62
|
+
if (typeof payload !== 'object' || payload === null || Array.isArray(payload)) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const { locale } = payload;
|
|
66
|
+
return typeof locale === 'string' && locale.length > 0 ? locale : undefined;
|
|
67
|
+
}
|
|
68
|
+
export function createStudioLocalizationActionHandlers(setActiveLocale) {
|
|
69
|
+
return {
|
|
70
|
+
setLanguage: ({ action }) => {
|
|
71
|
+
const locale = getSetLanguageLocale(action);
|
|
72
|
+
if (locale !== undefined) {
|
|
73
|
+
setActiveLocale(locale);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=runtimeLocalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeLocalization.js","sourceRoot":"","sources":["../src/runtimeLocalization.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
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
|
+
"./canvasDragModel": {
|
|
32
|
+
"types": "./dist/canvasDragModel.d.ts",
|
|
33
|
+
"import": "./dist/canvasDragModel.js"
|
|
34
|
+
},
|
|
31
35
|
"./canvasDropZones": {
|
|
32
36
|
"types": "./dist/canvasDropZones.d.ts",
|
|
33
37
|
"import": "./dist/canvasDropZones.js"
|
|
@@ -55,6 +59,10 @@
|
|
|
55
59
|
"./routeUtils": {
|
|
56
60
|
"types": "./dist/routeUtils.d.ts",
|
|
57
61
|
"import": "./dist/routeUtils.js"
|
|
62
|
+
},
|
|
63
|
+
"./runtimeLocalization": {
|
|
64
|
+
"types": "./dist/runtimeLocalization.d.ts",
|
|
65
|
+
"import": "./dist/runtimeLocalization.js"
|
|
58
66
|
}
|
|
59
67
|
},
|
|
60
68
|
"scripts": {
|