@makeswift/runtime 0.24.4-canary.0 → 0.24.4-canary.2
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/cjs/core/index.js +8 -2
- package/dist/cjs/core/index.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/next/api-handler/handlers/redirect-draft.js +11 -2
- package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +1 -1
- package/dist/cjs/prop-controllers/copy.js +2 -7
- package/dist/cjs/prop-controllers/copy.js.map +1 -1
- package/dist/cjs/state/react-page.js +4 -2
- package/dist/cjs/state/react-page.js.map +1 -1
- package/dist/esm/core/index.js +8 -2
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/next/api-handler/handlers/redirect-draft.js +7 -2
- package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +1 -1
- package/dist/esm/prop-controllers/copy.js +1 -5
- package/dist/esm/prop-controllers/copy.js.map +1 -1
- package/dist/esm/state/react-page.js +7 -3
- package/dist/esm/state/react-page.js.map +1 -1
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/index.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +1 -0
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts +2 -0
- package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts.map +1 -0
- package/dist/types/prop-controllers/copy.d.ts +0 -1
- package/dist/types/prop-controllers/copy.d.ts.map +1 -1
- package/dist/types/state/react-page.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/cjs/core/index.js
CHANGED
|
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var core_exports = {};
|
|
20
20
|
__export(core_exports, {
|
|
21
|
+
ContextResource: () => import_controls.ContextResource,
|
|
21
22
|
ControlDefinition: () => import_controls.ControlDefinition,
|
|
22
23
|
ControlInstance: () => import_controls.ControlInstance,
|
|
23
24
|
DefaultControlInstance: () => import_controls.DefaultControlInstance,
|
|
@@ -29,12 +30,15 @@ __export(core_exports, {
|
|
|
29
30
|
getViewportStyle: () => import_controls.getViewportStyle,
|
|
30
31
|
mergeOrCoalesceFallbacks: () => import_controls.mergeOrCoalesceFallbacks,
|
|
31
32
|
mergeResponsiveValues: () => import_controls.mergeResponsiveValues,
|
|
32
|
-
|
|
33
|
+
replaceResourceIfNeeded: () => import_controls.replaceResourceIfNeeded,
|
|
34
|
+
shallowMergeFallbacks: () => import_controls.shallowMergeFallbacks,
|
|
35
|
+
shouldRemoveResource: () => import_controls.shouldRemoveResource
|
|
33
36
|
});
|
|
34
37
|
module.exports = __toCommonJS(core_exports);
|
|
35
38
|
var import_controls = require("@makeswift/controls");
|
|
36
39
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
40
|
0 && (module.exports = {
|
|
41
|
+
ContextResource,
|
|
38
42
|
ControlDefinition,
|
|
39
43
|
ControlInstance,
|
|
40
44
|
DefaultControlInstance,
|
|
@@ -46,6 +50,8 @@ var import_controls = require("@makeswift/controls");
|
|
|
46
50
|
getViewportStyle,
|
|
47
51
|
mergeOrCoalesceFallbacks,
|
|
48
52
|
mergeResponsiveValues,
|
|
49
|
-
|
|
53
|
+
replaceResourceIfNeeded,
|
|
54
|
+
shallowMergeFallbacks,
|
|
55
|
+
shouldRemoveResource
|
|
50
56
|
});
|
|
51
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export {\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n type ConfigType,\n type Data,\n type DataType,\n type DeviceOverride,\n type FallbackStrategy,\n type ValueType,\n type ResolvedValueType,\n type ResponsiveValue,\n type ControlMessage,\n type ReplacementContext,\n type SendMessageType,\n ControlDefinition,\n ControlInstance,\n DefaultControlInstance,\n ShapeV2Control,\n getBaseBreakpoint,\n getBreakpoint,\n findBreakpointOverride,\n findNextFallback,\n mergeOrCoalesceFallbacks,\n mergeResponsiveValues,\n shallowMergeFallbacks,\n getViewportStyle,\n} from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export {\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n type ConfigType,\n type Data,\n type DataType,\n type DeviceOverride,\n type FallbackStrategy,\n type ValueType,\n type ResolvedValueType,\n type ResponsiveValue,\n type ControlMessage,\n type ReplacementContext,\n type SendMessageType,\n ControlDefinition,\n ControlInstance,\n DefaultControlInstance,\n ShapeV2Control,\n getBaseBreakpoint,\n getBreakpoint,\n findBreakpointOverride,\n findNextFallback,\n mergeOrCoalesceFallbacks,\n mergeResponsiveValues,\n shallowMergeFallbacks,\n getViewportStyle,\n replaceResourceIfNeeded,\n shouldRemoveResource,\n ContextResource,\n} from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBA8BO;","names":[]}
|
|
@@ -37,7 +37,7 @@ async function handler(...args) {
|
|
|
37
37
|
const supportsDraftMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
38
38
|
const supportsWebhook = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
39
39
|
const body = {
|
|
40
|
-
version: "0.24.4-canary.
|
|
40
|
+
version: "0.24.4-canary.2",
|
|
41
41
|
previewMode: supportsPreviewMode,
|
|
42
42
|
draftMode: supportsDraftMode,
|
|
43
43
|
interactionMode: true,
|
|
@@ -18,7 +18,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var redirect_draft_exports = {};
|
|
20
20
|
__export(redirect_draft_exports, {
|
|
21
|
-
default: () => redirectDraftHandler
|
|
21
|
+
default: () => redirectDraftHandler,
|
|
22
|
+
originalRequestProtocol: () => originalRequestProtocol
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(redirect_draft_exports);
|
|
24
25
|
var import_server = require("next/server");
|
|
@@ -32,6 +33,10 @@ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, impor
|
|
|
32
33
|
async function redirectDraftHandler(...args) {
|
|
33
34
|
return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, (args2) => redirectDraftRouteHandler(...args2)).with(apiRoutePattern, (args2) => redirectDraftApiRouteHandler(...args2)).exhaustive();
|
|
34
35
|
}
|
|
36
|
+
function originalRequestProtocol(request) {
|
|
37
|
+
const forwardedProto = request.headers.get("x-forwarded-proto");
|
|
38
|
+
return forwardedProto != null ? forwardedProto.split(",")[0].trim() : null;
|
|
39
|
+
}
|
|
35
40
|
async function redirectDraftRouteHandler(request, _context, { apiKey }) {
|
|
36
41
|
const secret = request.nextUrl.searchParams.get(import_draft.SearchParams.DraftMode);
|
|
37
42
|
if (secret == null) {
|
|
@@ -57,7 +62,7 @@ async function redirectDraftRouteHandler(request, _context, { apiKey }) {
|
|
|
57
62
|
value: JSON.stringify({ makeswift: true, siteVersion: import_site_version.MakeswiftSiteVersion.Working })
|
|
58
63
|
}
|
|
59
64
|
];
|
|
60
|
-
const redirectProtocol = request
|
|
65
|
+
const redirectProtocol = originalRequestProtocol(request) ?? request.nextUrl.protocol.replace(":", "");
|
|
61
66
|
const redirectHost = request.headers.get("x-forwarded-host") ?? request.headers.get("host") ?? request.nextUrl.host;
|
|
62
67
|
const redirectUrl = new URL(
|
|
63
68
|
`${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`
|
|
@@ -74,4 +79,8 @@ async function redirectDraftApiRouteHandler(_req, res, {}) {
|
|
|
74
79
|
console.error(message);
|
|
75
80
|
return res.status(500).send(message);
|
|
76
81
|
}
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
originalRequestProtocol
|
|
85
|
+
});
|
|
77
86
|
//# sourceMappingURL=redirect-draft.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\n\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectDraftError = string\n\ntype Response = unknown\n\nexport type RedirectDraftResponse = RedirectDraftError | Response\n\ntype RedirectDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>>\nexport default async function redirectDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectDraftHandler(\n ...args: RedirectDraftHandlerArgs\n): Promise<NextResponse<RedirectDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraftRouteHandler(...args))\n .with(apiRoutePattern, args => redirectDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function redirectDraftRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>> {\n const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode)\n\n if (secret == null) {\n return new NextResponse('Unauthorized to enable draft mode: no secret provided', {\n status: 401,\n })\n }\n if (secret !== apiKey) {\n return new NextResponse('Unauthorized to enable draft mode: incorrect secret', { status: 401 })\n }\n\n const draft = await draftMode()\n const cookieStore = await cookies()\n\n draft.enable()\n\n const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE)\n\n if (prerenderBypassCookie?.value == null) {\n return new NextResponse('Could not retrieve draft mode bypass cookie', { status: 500 })\n }\n\n const draftCookies: { name: string; value: string }[] = [\n prerenderBypassCookie,\n {\n name: MAKESWIFT_DRAFT_DATA_COOKIE,\n // Eventually, we can make this value dynamic using the request\n value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }),\n },\n ]\n\n const redirectProtocol =\n request
|
|
1
|
+
{"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\n\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectDraftError = string\n\ntype Response = unknown\n\nexport type RedirectDraftResponse = RedirectDraftError | Response\n\ntype RedirectDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>>\nexport default async function redirectDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectDraftHandler(\n ...args: RedirectDraftHandlerArgs\n): Promise<NextResponse<RedirectDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraftRouteHandler(...args))\n .with(apiRoutePattern, args => redirectDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nexport function originalRequestProtocol(request: NextRequest): string | null {\n // The `x-forwarded-proto` header is not formally standardized, but many proxies\n // *append* the protocol used for the request to the existing value. As a result,\n // if the request passes through multiple proxies, the header may contain a\n // comma-separated list of protocols: https://code.djangoproject.com/ticket/33569\n const forwardedProto = request.headers.get('x-forwarded-proto')\n return forwardedProto != null ? forwardedProto.split(',')[0].trim() : null\n}\n\nasync function redirectDraftRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>> {\n const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode)\n\n if (secret == null) {\n return new NextResponse('Unauthorized to enable draft mode: no secret provided', {\n status: 401,\n })\n }\n if (secret !== apiKey) {\n return new NextResponse('Unauthorized to enable draft mode: incorrect secret', { status: 401 })\n }\n\n const draft = await draftMode()\n const cookieStore = await cookies()\n\n draft.enable()\n\n const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE)\n\n if (prerenderBypassCookie?.value == null) {\n return new NextResponse('Could not retrieve draft mode bypass cookie', { status: 500 })\n }\n\n const draftCookies: { name: string; value: string }[] = [\n prerenderBypassCookie,\n {\n name: MAKESWIFT_DRAFT_DATA_COOKIE,\n // Eventually, we can make this value dynamic using the request\n value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }),\n },\n ]\n\n const redirectProtocol =\n originalRequestProtocol(request) ?? request.nextUrl.protocol.replace(':', '')\n\n const redirectHost =\n request.headers.get('x-forwarded-host') ?? request.headers.get('host') ?? request.nextUrl.host\n\n const redirectUrl = new URL(\n `${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`,\n )\n\n redirectUrl.searchParams.delete(SearchParams.DraftMode)\n\n const headers = new Headers()\n draftCookies.forEach(({ name, value }) => {\n headers.append(SET_COOKIE_HEADER, serializeCookie(name, value, { ...cookieSettingOptions }))\n })\n\n return NextResponse.redirect(redirectUrl, { headers })\n}\n\nasync function redirectDraftApiRouteHandler(\n _req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { }: { apiKey: string },\n): Promise<void> {\n const message =\n 'Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory'\n console.error(message)\n return res.status(500).send(message)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA0C;AAC1C,wBAAyB;AACzB,qBAAmC;AAEnC,oBAA6C;AAE7C,0BAAqC;AACrC,mBAMO;AAcP,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,wBACF,MACkD;AACrD,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,0BAA0B,GAAGA,KAAI,CAAC,EACpE,KAAK,iBAAiB,CAAAA,UAAQ,6BAA6B,GAAGA,KAAI,CAAC,EACnE,WAAW;AAChB;AAEO,SAAS,wBAAwB,SAAqC;AAK3E,QAAM,iBAAiB,QAAQ,QAAQ,IAAI,mBAAmB;AAC9D,SAAO,kBAAkB,OAAO,eAAe,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI;AACxE;AAEA,eAAe,0BACb,SACA,UACA,EAAE,OAAO,GACqC;AAC9C,QAAM,SAAS,QAAQ,QAAQ,aAAa,IAAI,0BAAa,SAAS;AAEtE,MAAI,UAAU,MAAM;AAClB,WAAO,IAAI,2BAAa,yDAAyD;AAAA,MAC/E,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACA,MAAI,WAAW,QAAQ;AACrB,WAAO,IAAI,2BAAa,uDAAuD,EAAE,QAAQ,IAAI,CAAC;AAAA,EAChG;AAEA,QAAM,QAAQ,UAAM,0BAAU;AAC9B,QAAM,cAAc,UAAM,wBAAQ;AAElC,QAAM,OAAO;AAEb,QAAM,wBAAwB,YAAY,IAAI,oCAAuB;AAErE,MAAI,uBAAuB,SAAS,MAAM;AACxC,WAAO,IAAI,2BAAa,+CAA+C,EAAE,QAAQ,IAAI,CAAC;AAAA,EACxF;AAEA,QAAM,eAAkD;AAAA,IACtD;AAAA,IACA;AAAA,MACE,MAAM;AAAA;AAAA,MAEN,OAAO,KAAK,UAAU,EAAE,WAAW,MAAM,aAAa,yCAAqB,QAAQ,CAAC;AAAA,IACtF;AAAA,EACF;AAEA,QAAM,mBACJ,wBAAwB,OAAO,KAAK,QAAQ,QAAQ,SAAS,QAAQ,KAAK,EAAE;AAE9E,QAAM,eACJ,QAAQ,QAAQ,IAAI,kBAAkB,KAAK,QAAQ,QAAQ,IAAI,MAAM,KAAK,QAAQ,QAAQ;AAE5F,QAAM,cAAc,IAAI;AAAA,IACtB,GAAG,gBAAgB,MAAM,YAAY,GAAG,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,MAAM;AAAA,EAC3F;AAEA,cAAY,aAAa,OAAO,0BAAa,SAAS;AAEtD,QAAM,UAAU,IAAI,QAAQ;AAC5B,eAAa,QAAQ,CAAC,EAAE,MAAM,MAAM,MAAM;AACxC,YAAQ,OAAO,oCAAmB,cAAAC,WAAgB,MAAM,OAAO,EAAE,GAAG,kCAAqB,CAAC,CAAC;AAAA,EAC7F,CAAC;AAED,SAAO,2BAAa,SAAS,aAAa,EAAE,QAAQ,CAAC;AACvD;AAEA,eAAe,6BACb,MACA,KACA,CAAE,GACa;AACf,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,IAAI,OAAO,GAAG,EAAE,KAAK,OAAO;AACrC;","names":["args","serializeCookie"]}
|
|
@@ -18,8 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var copy_exports = {};
|
|
20
20
|
__export(copy_exports, {
|
|
21
|
-
copy: () => copy
|
|
22
|
-
copyElementReference: () => copyElementReference
|
|
21
|
+
copy: () => copy
|
|
23
22
|
});
|
|
24
23
|
module.exports = __toCommonJS(copy_exports);
|
|
25
24
|
var import_prop_controllers = require("@makeswift/prop-controllers");
|
|
@@ -57,12 +56,8 @@ function copy(descriptor, value, context) {
|
|
|
57
56
|
return value;
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
|
-
function copyElementReference(value, context) {
|
|
61
|
-
return context.replacementContext.globalElementIds.get(value) || value;
|
|
62
|
-
}
|
|
63
59
|
// Annotate the CommonJS export names for ESM import in node:
|
|
64
60
|
0 && (module.exports = {
|
|
65
|
-
copy
|
|
66
|
-
copyElementReference
|
|
61
|
+
copy
|
|
67
62
|
});
|
|
68
63
|
//# sourceMappingURL=copy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prop-controllers/copy.ts"],"sourcesContent":["import { type CopyContext } from '@makeswift/controls'\n\nimport {\n copyLinkPropControllerData,\n copyShadowsPropControllerData,\n copyBorderPropControllerData,\n copyElementIDPropControllerData,\n copyGridPropControllerData,\n copyImagePropControllerData,\n copyImagesPropControllerData,\n copyBackgroundsPropControllerData,\n copyResponsiveColorPropControllerData,\n copyTablePropControllerData,\n copyNavigationLinksPropControllerData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\n\nimport { isLegacyDescriptor, type Descriptor } from './descriptors'\n\n// @note: note typing value, because would then have to type narrow `Data` per case\nexport function copy(descriptor: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.copyData(value, context)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return copyBackgroundsPropControllerData(descriptor, value, context)\n\n case PropControllerTypes.Grid:\n return copyGridPropControllerData(value, context)\n\n case PropControllerTypes.NavigationLinks:\n return copyNavigationLinksPropControllerData(value, context)\n\n case PropControllerTypes.Link:\n return copyLinkPropControllerData(value, context)\n\n case PropControllerTypes.Shadows:\n return copyShadowsPropControllerData(value, context)\n\n case PropControllerTypes.Image:\n return copyImagePropControllerData(value, context)\n\n case PropControllerTypes.Images:\n return copyImagesPropControllerData(value, context)\n\n case PropControllerTypes.ResponsiveColor:\n return copyResponsiveColorPropControllerData(value, context)\n\n case PropControllerTypes.TableFormFields:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Table:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Border:\n return copyBorderPropControllerData(value, context)\n\n case PropControllerTypes.ElementID:\n return copyElementIDPropControllerData(value, context)\n\n // FIXME: DELETED_PROP_CONTROLLER_TYPES.RichText ??\n\n default:\n return value\n }\n}\n
|
|
1
|
+
{"version":3,"sources":["../../../src/prop-controllers/copy.ts"],"sourcesContent":["import { type CopyContext } from '@makeswift/controls'\n\nimport {\n copyLinkPropControllerData,\n copyShadowsPropControllerData,\n copyBorderPropControllerData,\n copyElementIDPropControllerData,\n copyGridPropControllerData,\n copyImagePropControllerData,\n copyImagesPropControllerData,\n copyBackgroundsPropControllerData,\n copyResponsiveColorPropControllerData,\n copyTablePropControllerData,\n copyNavigationLinksPropControllerData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\n\nimport { isLegacyDescriptor, type Descriptor } from './descriptors'\n\n// @note: note typing value, because would then have to type narrow `Data` per case\nexport function copy(descriptor: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.copyData(value, context)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return copyBackgroundsPropControllerData(descriptor, value, context)\n\n case PropControllerTypes.Grid:\n return copyGridPropControllerData(value, context)\n\n case PropControllerTypes.NavigationLinks:\n return copyNavigationLinksPropControllerData(value, context)\n\n case PropControllerTypes.Link:\n return copyLinkPropControllerData(value, context)\n\n case PropControllerTypes.Shadows:\n return copyShadowsPropControllerData(value, context)\n\n case PropControllerTypes.Image:\n return copyImagePropControllerData(value, context)\n\n case PropControllerTypes.Images:\n return copyImagesPropControllerData(value, context)\n\n case PropControllerTypes.ResponsiveColor:\n return copyResponsiveColorPropControllerData(value, context)\n\n case PropControllerTypes.TableFormFields:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Table:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Border:\n return copyBorderPropControllerData(value, context)\n\n case PropControllerTypes.ElementID:\n return copyElementIDPropControllerData(value, context)\n\n // FIXME: DELETED_PROP_CONTROLLER_TYPES.RichText ??\n\n default:\n return value\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAaO;AAEP,yBAAoD;AAG7C,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,2DAAkC,YAAY,OAAO,OAAO;AAAA,IAErE,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,oDAA2B,OAAO,OAAO;AAAA,IAElD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,OAAO,OAAO;AAAA,IAE7D,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,oDAA2B,OAAO,OAAO;AAAA,IAElD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,uDAA8B,OAAO,OAAO;AAAA,IAErD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,qDAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,sDAA6B,OAAO,OAAO;AAAA,IAEpD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,OAAO,OAAO;AAAA,IAE7D,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,qDAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,qDAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,sDAA6B,OAAO,OAAO;AAAA,IAEpD,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,yDAAgC,OAAO,OAAO;AAAA,IAIvD;AACE,aAAO;AAAA,EACX;AACF;","names":["PropControllerTypes"]}
|
|
@@ -72,7 +72,6 @@ var IsPreview = __toESM(require("./modules/is-preview"));
|
|
|
72
72
|
var BuilderEditMode = __toESM(require("./modules/builder-edit-mode"));
|
|
73
73
|
var Breakpoints = __toESM(require("./modules/breakpoints"));
|
|
74
74
|
var import_actions = require("./actions");
|
|
75
|
-
var import_copy = require("../prop-controllers/copy");
|
|
76
75
|
var import_control = require("../controls/control");
|
|
77
76
|
var import_setup_teardown = require("./mixins/setup-teardown");
|
|
78
77
|
var import_read_only_documents = require("./modules/read-only-documents");
|
|
@@ -157,7 +156,10 @@ function copyElementTree(state, elementTree, replacementContext) {
|
|
|
157
156
|
copyElement: copyElementTreeNode(state2, replacementContext2)
|
|
158
157
|
};
|
|
159
158
|
if (Documents.isElementReference(node)) {
|
|
160
|
-
return {
|
|
159
|
+
return {
|
|
160
|
+
...node,
|
|
161
|
+
value: (0, import_controls.replaceResourceIfNeeded)(import_controls.ContextResource.GlobalElement, node.value, context)
|
|
162
|
+
};
|
|
161
163
|
}
|
|
162
164
|
const descriptors = getComponentPropControllerDescriptors(state2, node.type);
|
|
163
165
|
if (descriptors == null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/state/react-page.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n type Dispatch as ReduxDispatch,\n type Middleware,\n type MiddlewareAPI,\n type Store as ReduxStore,\n} from 'redux'\n\nimport thunk, { ThunkDispatch } from 'redux-thunk'\nimport { createSelector } from 'reselect'\n\nimport { composeWithDevToolsDevelopmentOnly } from '@redux-devtools/extension'\n\nimport {\n createReplacementContext,\n type SerializableReplacementContext,\n type ReplacementContext,\n type TranslationDto,\n type MergeTranslatableDataContext,\n type MergeContext,\n} from '@makeswift/controls'\n\nimport { serializeState } from '../utils/serializeState'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Breakpoints from './modules/breakpoints'\nimport {\n type Action,\n ActionTypes,\n changeElementTree,\n createElementTree,\n deleteElementTree,\n} from './actions'\n\nimport { copyElementReference } from '../prop-controllers/copy'\nimport {\n copy as copyFromControl,\n getTranslatableData,\n merge,\n mergeTranslatedData,\n} from '../controls/control'\n\nimport { type SetupTeardownMixin, withSetupTeardown } from './mixins/setup-teardown'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\n\nexport {\n createBaseDocument,\n createDocumentReference,\n getRootElement,\n isElementReference,\n} from './modules/read-only-documents'\n\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getElementTreesSlice(state: State): ElementTrees.State {\n return state.elementTrees\n}\n\nexport function getElements(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elements'] {\n return ElementTrees.getElements(getElementTreesSlice(state), documentKey)\n}\n\nexport function getElementIds(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elementIds'] {\n return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(state: State): PropControllers.State {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): PropControllers.DescriptorsByProp | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n */\nexport const getDocumentKeysSortedByDepth: (state: State) => string[] = createSelector(\n [getDocumentsStateSlice, getElementTreesSlice],\n (documents, elementTrees) => {\n return [...documents.keys()].sort((a, b) => (elementTrees.get(a)?.elements.has(b) ? -1 : 1))\n },\n)\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return { ...node, value: copyElementReference(node.value, context) }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getElementTreeTranslatableData(\n state: State,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n const descriptors = getPropControllerDescriptors(state)\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementPescriptors = descriptors.get(element.type)\n if (elementPescriptors == null) continue\n\n Object.entries(elementPescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n\nexport function mergeElementTreeTranslatedData(\n state: State,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(state: State, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(node.type)\n\n if (descriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData,\n mergeTranslatedData: merge(state, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(state, translatedData)(elementTree)\n}\n\nexport function mergeElement(\n state: State,\n baseElement: Documents.Element,\n overrideElement: Documents.Element,\n): Documents.Element {\n if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {\n throw new Error(`Can't merge elements of different types or keys`)\n }\n\n if (Documents.isElementReference(overrideElement)) return overrideElement\n\n if (Documents.isElementReference(baseElement)) return baseElement\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(baseElement.type)\n\n if (descriptors == null) {\n throw new Error(\n `Can't merge element of type \"${baseElement.type}\" because it has no descriptors`,\n )\n }\n\n const mergedProps = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n const context: MergeContext = {\n mergeElement(base, override) {\n return mergeElement(state, base, override)\n },\n }\n\n mergedProps[propName] = merge(\n descriptor,\n baseElement.props[propName],\n overrideElement.props[propName],\n context,\n )\n }\n\n return { ...baseElement, props: mergedProps }\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport function getBreakpoints(state: State): Breakpoints.State {\n return state.breakpoints\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch } & SetupTeardownMixin\n\nexport function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n dispatch(\n createElementTree({\n document: action.payload.document,\n descriptors: getPropControllerDescriptors(getState()),\n }),\n )\n break\n\n case ActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n\n case ActionTypes.UNREGISTER_DOCUMENT:\n dispatch(deleteElementTree(action.payload))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function configureStore({\n name,\n preloadedState,\n breakpoints,\n}: {\n name: string\n preloadedState: Partial<State> | null\n breakpoints?: Breakpoints.State\n}): Store {\n const composeEnhancers = composeWithDevToolsDevelopmentOnly({\n name: `${name} (${new Date().toISOString()})`,\n serialize: true,\n stateSanitizer: (state: any) => serializeState(state),\n })\n\n return createStore(\n reducer,\n {\n ...preloadedState,\n breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints),\n },\n composeEnhancers(\n withSetupTeardown(\n () => {},\n () => {},\n ),\n applyMiddleware(thunk, elementTreeMiddleware()),\n ),\n )\n}\n"],"mappings":"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","names":["state","replacementContext","copyFromControl","merge","translatedData","thunk"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/state/react-page.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n type Dispatch as ReduxDispatch,\n type Middleware,\n type MiddlewareAPI,\n type Store as ReduxStore,\n} from 'redux'\n\nimport thunk, { ThunkDispatch } from 'redux-thunk'\nimport { createSelector } from 'reselect'\n\nimport { composeWithDevToolsDevelopmentOnly } from '@redux-devtools/extension'\n\nimport {\n createReplacementContext,\n type SerializableReplacementContext,\n type ReplacementContext,\n type TranslationDto,\n type MergeTranslatableDataContext,\n type MergeContext,\n CopyContext,\n replaceResourceIfNeeded,\n ContextResource,\n} from '@makeswift/controls'\n\nimport { serializeState } from '../utils/serializeState'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Breakpoints from './modules/breakpoints'\nimport {\n type Action,\n ActionTypes,\n changeElementTree,\n createElementTree,\n deleteElementTree,\n} from './actions'\nimport {\n copy as copyFromControl,\n getTranslatableData,\n merge,\n mergeTranslatedData,\n} from '../controls/control'\n\nimport { type SetupTeardownMixin, withSetupTeardown } from './mixins/setup-teardown'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\n\nexport {\n createBaseDocument,\n createDocumentReference,\n getRootElement,\n isElementReference,\n} from './modules/read-only-documents'\n\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getElementTreesSlice(state: State): ElementTrees.State {\n return state.elementTrees\n}\n\nexport function getElements(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elements'] {\n return ElementTrees.getElements(getElementTreesSlice(state), documentKey)\n}\n\nexport function getElementIds(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elementIds'] {\n return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(state: State): PropControllers.State {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): PropControllers.DescriptorsByProp | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n */\nexport const getDocumentKeysSortedByDepth: (state: State) => string[] = createSelector(\n [getDocumentsStateSlice, getElementTreesSlice],\n (documents, elementTrees) => {\n return [...documents.keys()].sort((a, b) => (elementTrees.get(a)?.elements.has(b) ? -1 : 1))\n },\n)\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context: CopyContext = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return {\n ...node,\n value: replaceResourceIfNeeded(ContextResource.GlobalElement, node.value, context),\n }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getElementTreeTranslatableData(\n state: State,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n const descriptors = getPropControllerDescriptors(state)\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementPescriptors = descriptors.get(element.type)\n if (elementPescriptors == null) continue\n\n Object.entries(elementPescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n\nexport function mergeElementTreeTranslatedData(\n state: State,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(state: State, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(node.type)\n\n if (descriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData,\n mergeTranslatedData: merge(state, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(state, translatedData)(elementTree)\n}\n\nexport function mergeElement(\n state: State,\n baseElement: Documents.Element,\n overrideElement: Documents.Element,\n): Documents.Element {\n if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {\n throw new Error(`Can't merge elements of different types or keys`)\n }\n\n if (Documents.isElementReference(overrideElement)) return overrideElement\n\n if (Documents.isElementReference(baseElement)) return baseElement\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(baseElement.type)\n\n if (descriptors == null) {\n throw new Error(\n `Can't merge element of type \"${baseElement.type}\" because it has no descriptors`,\n )\n }\n\n const mergedProps = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n const context: MergeContext = {\n mergeElement(base, override) {\n return mergeElement(state, base, override)\n },\n }\n\n mergedProps[propName] = merge(\n descriptor,\n baseElement.props[propName],\n overrideElement.props[propName],\n context,\n )\n }\n\n return { ...baseElement, props: mergedProps }\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport function getBreakpoints(state: State): Breakpoints.State {\n return state.breakpoints\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch } & SetupTeardownMixin\n\nexport function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n dispatch(\n createElementTree({\n document: action.payload.document,\n descriptors: getPropControllerDescriptors(getState()),\n }),\n )\n break\n\n case ActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n\n case ActionTypes.UNREGISTER_DOCUMENT:\n dispatch(deleteElementTree(action.payload))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function configureStore({\n name,\n preloadedState,\n breakpoints,\n}: {\n name: string\n preloadedState: Partial<State> | null\n breakpoints?: Breakpoints.State\n}): Store {\n const composeEnhancers = composeWithDevToolsDevelopmentOnly({\n name: `${name} (${new Date().toISOString()})`,\n serialize: true,\n stateSanitizer: (state: any) => serializeState(state),\n })\n\n return createStore(\n reducer,\n {\n ...preloadedState,\n breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints),\n },\n composeEnhancers(\n withSetupTeardown(\n () => {},\n () => {},\n ),\n applyMiddleware(thunk, elementTreeMiddleware()),\n ),\n )\n}\n"],"mappings":"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","names":["state","replacementContext","copyFromControl","merge","translatedData","thunk"]}
|
package/dist/esm/core/index.js
CHANGED
|
@@ -10,9 +10,13 @@ import {
|
|
|
10
10
|
mergeOrCoalesceFallbacks,
|
|
11
11
|
mergeResponsiveValues,
|
|
12
12
|
shallowMergeFallbacks,
|
|
13
|
-
getViewportStyle
|
|
13
|
+
getViewportStyle,
|
|
14
|
+
replaceResourceIfNeeded,
|
|
15
|
+
shouldRemoveResource,
|
|
16
|
+
ContextResource
|
|
14
17
|
} from "@makeswift/controls";
|
|
15
18
|
export {
|
|
19
|
+
ContextResource,
|
|
16
20
|
ControlDefinition,
|
|
17
21
|
ControlInstance,
|
|
18
22
|
DefaultControlInstance,
|
|
@@ -24,6 +28,8 @@ export {
|
|
|
24
28
|
getViewportStyle,
|
|
25
29
|
mergeOrCoalesceFallbacks,
|
|
26
30
|
mergeResponsiveValues,
|
|
27
|
-
|
|
31
|
+
replaceResourceIfNeeded,
|
|
32
|
+
shallowMergeFallbacks,
|
|
33
|
+
shouldRemoveResource
|
|
28
34
|
};
|
|
29
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export {\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n type ConfigType,\n type Data,\n type DataType,\n type DeviceOverride,\n type FallbackStrategy,\n type ValueType,\n type ResolvedValueType,\n type ResponsiveValue,\n type ControlMessage,\n type ReplacementContext,\n type SendMessageType,\n ControlDefinition,\n ControlInstance,\n DefaultControlInstance,\n ShapeV2Control,\n getBaseBreakpoint,\n getBreakpoint,\n findBreakpointOverride,\n findNextFallback,\n mergeOrCoalesceFallbacks,\n mergeResponsiveValues,\n shallowMergeFallbacks,\n getViewportStyle,\n} from '@makeswift/controls'\n"],"mappings":"AAAA;AAAA,EAeE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/index.ts"],"sourcesContent":["export {\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n type ConfigType,\n type Data,\n type DataType,\n type DeviceOverride,\n type FallbackStrategy,\n type ValueType,\n type ResolvedValueType,\n type ResponsiveValue,\n type ControlMessage,\n type ReplacementContext,\n type SendMessageType,\n ControlDefinition,\n ControlInstance,\n DefaultControlInstance,\n ShapeV2Control,\n getBaseBreakpoint,\n getBreakpoint,\n findBreakpointOverride,\n findNextFallback,\n mergeOrCoalesceFallbacks,\n mergeResponsiveValues,\n shallowMergeFallbacks,\n getViewportStyle,\n replaceResourceIfNeeded,\n shouldRemoveResource,\n ContextResource,\n} from '@makeswift/controls'\n"],"mappings":"AAAA;AAAA,EAeE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -14,7 +14,7 @@ async function handler(...args) {
|
|
|
14
14
|
const supportsDraftMode = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
15
15
|
const supportsWebhook = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
16
16
|
const body = {
|
|
17
|
-
version: "0.24.4-canary.
|
|
17
|
+
version: "0.24.4-canary.2",
|
|
18
18
|
previewMode: supportsPreviewMode,
|
|
19
19
|
draftMode: supportsDraftMode,
|
|
20
20
|
interactionMode: true,
|
|
@@ -15,6 +15,10 @@ const apiRoutePattern = [P.any, P.any, P.any];
|
|
|
15
15
|
async function redirectDraftHandler(...args) {
|
|
16
16
|
return match(args).with(routeHandlerPattern, (args2) => redirectDraftRouteHandler(...args2)).with(apiRoutePattern, (args2) => redirectDraftApiRouteHandler(...args2)).exhaustive();
|
|
17
17
|
}
|
|
18
|
+
function originalRequestProtocol(request) {
|
|
19
|
+
const forwardedProto = request.headers.get("x-forwarded-proto");
|
|
20
|
+
return forwardedProto != null ? forwardedProto.split(",")[0].trim() : null;
|
|
21
|
+
}
|
|
18
22
|
async function redirectDraftRouteHandler(request, _context, { apiKey }) {
|
|
19
23
|
const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode);
|
|
20
24
|
if (secret == null) {
|
|
@@ -40,7 +44,7 @@ async function redirectDraftRouteHandler(request, _context, { apiKey }) {
|
|
|
40
44
|
value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working })
|
|
41
45
|
}
|
|
42
46
|
];
|
|
43
|
-
const redirectProtocol = request
|
|
47
|
+
const redirectProtocol = originalRequestProtocol(request) ?? request.nextUrl.protocol.replace(":", "");
|
|
44
48
|
const redirectHost = request.headers.get("x-forwarded-host") ?? request.headers.get("host") ?? request.nextUrl.host;
|
|
45
49
|
const redirectUrl = new URL(
|
|
46
50
|
`${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`
|
|
@@ -58,6 +62,7 @@ async function redirectDraftApiRouteHandler(_req, res, {}) {
|
|
|
58
62
|
return res.status(500).send(message);
|
|
59
63
|
}
|
|
60
64
|
export {
|
|
61
|
-
redirectDraftHandler as default
|
|
65
|
+
redirectDraftHandler as default,
|
|
66
|
+
originalRequestProtocol
|
|
62
67
|
};
|
|
63
68
|
//# sourceMappingURL=redirect-draft.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\n\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectDraftError = string\n\ntype Response = unknown\n\nexport type RedirectDraftResponse = RedirectDraftError | Response\n\ntype RedirectDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>>\nexport default async function redirectDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectDraftHandler(\n ...args: RedirectDraftHandlerArgs\n): Promise<NextResponse<RedirectDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraftRouteHandler(...args))\n .with(apiRoutePattern, args => redirectDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function redirectDraftRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>> {\n const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode)\n\n if (secret == null) {\n return new NextResponse('Unauthorized to enable draft mode: no secret provided', {\n status: 401,\n })\n }\n if (secret !== apiKey) {\n return new NextResponse('Unauthorized to enable draft mode: incorrect secret', { status: 401 })\n }\n\n const draft = await draftMode()\n const cookieStore = await cookies()\n\n draft.enable()\n\n const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE)\n\n if (prerenderBypassCookie?.value == null) {\n return new NextResponse('Could not retrieve draft mode bypass cookie', { status: 500 })\n }\n\n const draftCookies: { name: string; value: string }[] = [\n prerenderBypassCookie,\n {\n name: MAKESWIFT_DRAFT_DATA_COOKIE,\n // Eventually, we can make this value dynamic using the request\n value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }),\n },\n ]\n\n const redirectProtocol =\n request
|
|
1
|
+
{"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\n\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectDraftError = string\n\ntype Response = unknown\n\nexport type RedirectDraftResponse = RedirectDraftError | Response\n\ntype RedirectDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>>\nexport default async function redirectDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectDraftHandler(\n ...args: RedirectDraftHandlerArgs\n): Promise<NextResponse<RedirectDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraftRouteHandler(...args))\n .with(apiRoutePattern, args => redirectDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nexport function originalRequestProtocol(request: NextRequest): string | null {\n // The `x-forwarded-proto` header is not formally standardized, but many proxies\n // *append* the protocol used for the request to the existing value. As a result,\n // if the request passes through multiple proxies, the header may contain a\n // comma-separated list of protocols: https://code.djangoproject.com/ticket/33569\n const forwardedProto = request.headers.get('x-forwarded-proto')\n return forwardedProto != null ? forwardedProto.split(',')[0].trim() : null\n}\n\nasync function redirectDraftRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>> {\n const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode)\n\n if (secret == null) {\n return new NextResponse('Unauthorized to enable draft mode: no secret provided', {\n status: 401,\n })\n }\n if (secret !== apiKey) {\n return new NextResponse('Unauthorized to enable draft mode: incorrect secret', { status: 401 })\n }\n\n const draft = await draftMode()\n const cookieStore = await cookies()\n\n draft.enable()\n\n const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE)\n\n if (prerenderBypassCookie?.value == null) {\n return new NextResponse('Could not retrieve draft mode bypass cookie', { status: 500 })\n }\n\n const draftCookies: { name: string; value: string }[] = [\n prerenderBypassCookie,\n {\n name: MAKESWIFT_DRAFT_DATA_COOKIE,\n // Eventually, we can make this value dynamic using the request\n value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }),\n },\n ]\n\n const redirectProtocol =\n originalRequestProtocol(request) ?? request.nextUrl.protocol.replace(':', '')\n\n const redirectHost =\n request.headers.get('x-forwarded-host') ?? request.headers.get('host') ?? request.nextUrl.host\n\n const redirectUrl = new URL(\n `${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`,\n )\n\n redirectUrl.searchParams.delete(SearchParams.DraftMode)\n\n const headers = new Headers()\n draftCookies.forEach(({ name, value }) => {\n headers.append(SET_COOKIE_HEADER, serializeCookie(name, value, { ...cookieSettingOptions }))\n })\n\n return NextResponse.redirect(redirectUrl, { headers })\n}\n\nasync function redirectDraftApiRouteHandler(\n _req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { }: { apiKey: string },\n): Promise<void> {\n const message =\n 'Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory'\n console.error(message)\n return res.status(500).send(message)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AACzB,SAAS,SAAS,iBAAiB;AAEnC,SAAS,aAAa,uBAAuB;AAE7C,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAY5C,eAAO,wBACF,MACkD;AACrD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,0BAA0B,GAAGA,KAAI,CAAC,EACpE,KAAK,iBAAiB,CAAAA,UAAQ,6BAA6B,GAAGA,KAAI,CAAC,EACnE,WAAW;AAChB;AAEO,SAAS,wBAAwB,SAAqC;AAK3E,QAAM,iBAAiB,QAAQ,QAAQ,IAAI,mBAAmB;AAC9D,SAAO,kBAAkB,OAAO,eAAe,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI;AACxE;AAEA,eAAe,0BACb,SACA,UACA,EAAE,OAAO,GACqC;AAC9C,QAAM,SAAS,QAAQ,QAAQ,aAAa,IAAI,aAAa,SAAS;AAEtE,MAAI,UAAU,MAAM;AAClB,WAAO,IAAI,aAAa,yDAAyD;AAAA,MAC/E,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACA,MAAI,WAAW,QAAQ;AACrB,WAAO,IAAI,aAAa,uDAAuD,EAAE,QAAQ,IAAI,CAAC;AAAA,EAChG;AAEA,QAAM,QAAQ,MAAM,UAAU;AAC9B,QAAM,cAAc,MAAM,QAAQ;AAElC,QAAM,OAAO;AAEb,QAAM,wBAAwB,YAAY,IAAI,uBAAuB;AAErE,MAAI,uBAAuB,SAAS,MAAM;AACxC,WAAO,IAAI,aAAa,+CAA+C,EAAE,QAAQ,IAAI,CAAC;AAAA,EACxF;AAEA,QAAM,eAAkD;AAAA,IACtD;AAAA,IACA;AAAA,MACE,MAAM;AAAA;AAAA,MAEN,OAAO,KAAK,UAAU,EAAE,WAAW,MAAM,aAAa,qBAAqB,QAAQ,CAAC;AAAA,IACtF;AAAA,EACF;AAEA,QAAM,mBACJ,wBAAwB,OAAO,KAAK,QAAQ,QAAQ,SAAS,QAAQ,KAAK,EAAE;AAE9E,QAAM,eACJ,QAAQ,QAAQ,IAAI,kBAAkB,KAAK,QAAQ,QAAQ,IAAI,MAAM,KAAK,QAAQ,QAAQ;AAE5F,QAAM,cAAc,IAAI;AAAA,IACtB,GAAG,gBAAgB,MAAM,YAAY,GAAG,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,MAAM;AAAA,EAC3F;AAEA,cAAY,aAAa,OAAO,aAAa,SAAS;AAEtD,QAAM,UAAU,IAAI,QAAQ;AAC5B,eAAa,QAAQ,CAAC,EAAE,MAAM,MAAM,MAAM;AACxC,YAAQ,OAAO,mBAAmB,gBAAgB,MAAM,OAAO,EAAE,GAAG,qBAAqB,CAAC,CAAC;AAAA,EAC7F,CAAC;AAED,SAAO,aAAa,SAAS,aAAa,EAAE,QAAQ,CAAC;AACvD;AAEA,eAAe,6BACb,MACA,KACA,CAAE,GACa;AACf,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,IAAI,OAAO,GAAG,EAAE,KAAK,OAAO;AACrC;","names":["args"]}
|
|
@@ -46,11 +46,7 @@ function copy(descriptor, value, context) {
|
|
|
46
46
|
return value;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
function copyElementReference(value, context) {
|
|
50
|
-
return context.replacementContext.globalElementIds.get(value) || value;
|
|
51
|
-
}
|
|
52
49
|
export {
|
|
53
|
-
copy
|
|
54
|
-
copyElementReference
|
|
50
|
+
copy
|
|
55
51
|
};
|
|
56
52
|
//# sourceMappingURL=copy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prop-controllers/copy.ts"],"sourcesContent":["import { type CopyContext } from '@makeswift/controls'\n\nimport {\n copyLinkPropControllerData,\n copyShadowsPropControllerData,\n copyBorderPropControllerData,\n copyElementIDPropControllerData,\n copyGridPropControllerData,\n copyImagePropControllerData,\n copyImagesPropControllerData,\n copyBackgroundsPropControllerData,\n copyResponsiveColorPropControllerData,\n copyTablePropControllerData,\n copyNavigationLinksPropControllerData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\n\nimport { isLegacyDescriptor, type Descriptor } from './descriptors'\n\n// @note: note typing value, because would then have to type narrow `Data` per case\nexport function copy(descriptor: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.copyData(value, context)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return copyBackgroundsPropControllerData(descriptor, value, context)\n\n case PropControllerTypes.Grid:\n return copyGridPropControllerData(value, context)\n\n case PropControllerTypes.NavigationLinks:\n return copyNavigationLinksPropControllerData(value, context)\n\n case PropControllerTypes.Link:\n return copyLinkPropControllerData(value, context)\n\n case PropControllerTypes.Shadows:\n return copyShadowsPropControllerData(value, context)\n\n case PropControllerTypes.Image:\n return copyImagePropControllerData(value, context)\n\n case PropControllerTypes.Images:\n return copyImagesPropControllerData(value, context)\n\n case PropControllerTypes.ResponsiveColor:\n return copyResponsiveColorPropControllerData(value, context)\n\n case PropControllerTypes.TableFormFields:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Table:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Border:\n return copyBorderPropControllerData(value, context)\n\n case PropControllerTypes.ElementID:\n return copyElementIDPropControllerData(value, context)\n\n // FIXME: DELETED_PROP_CONTROLLER_TYPES.RichText ??\n\n default:\n return value\n }\n}\n
|
|
1
|
+
{"version":3,"sources":["../../../src/prop-controllers/copy.ts"],"sourcesContent":["import { type CopyContext } from '@makeswift/controls'\n\nimport {\n copyLinkPropControllerData,\n copyShadowsPropControllerData,\n copyBorderPropControllerData,\n copyElementIDPropControllerData,\n copyGridPropControllerData,\n copyImagePropControllerData,\n copyImagesPropControllerData,\n copyBackgroundsPropControllerData,\n copyResponsiveColorPropControllerData,\n copyTablePropControllerData,\n copyNavigationLinksPropControllerData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\n\nimport { isLegacyDescriptor, type Descriptor } from './descriptors'\n\n// @note: note typing value, because would then have to type narrow `Data` per case\nexport function copy(descriptor: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.copyData(value, context)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return copyBackgroundsPropControllerData(descriptor, value, context)\n\n case PropControllerTypes.Grid:\n return copyGridPropControllerData(value, context)\n\n case PropControllerTypes.NavigationLinks:\n return copyNavigationLinksPropControllerData(value, context)\n\n case PropControllerTypes.Link:\n return copyLinkPropControllerData(value, context)\n\n case PropControllerTypes.Shadows:\n return copyShadowsPropControllerData(value, context)\n\n case PropControllerTypes.Image:\n return copyImagePropControllerData(value, context)\n\n case PropControllerTypes.Images:\n return copyImagesPropControllerData(value, context)\n\n case PropControllerTypes.ResponsiveColor:\n return copyResponsiveColorPropControllerData(value, context)\n\n case PropControllerTypes.TableFormFields:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Table:\n return copyTablePropControllerData(value, context)\n\n case PropControllerTypes.Border:\n return copyBorderPropControllerData(value, context)\n\n case PropControllerTypes.ElementID:\n return copyElementIDPropControllerData(value, context)\n\n // FIXME: DELETED_PROP_CONTROLLER_TYPES.RichText ??\n\n default:\n return value\n }\n}\n"],"mappings":"AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACJ;AAEP,SAAS,0BAA2C;AAG7C,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,CAAC,mBAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,oBAAoB;AACvB,aAAO,kCAAkC,YAAY,OAAO,OAAO;AAAA,IAErE,KAAK,oBAAoB;AACvB,aAAO,2BAA2B,OAAO,OAAO;AAAA,IAElD,KAAK,oBAAoB;AACvB,aAAO,sCAAsC,OAAO,OAAO;AAAA,IAE7D,KAAK,oBAAoB;AACvB,aAAO,2BAA2B,OAAO,OAAO;AAAA,IAElD,KAAK,oBAAoB;AACvB,aAAO,8BAA8B,OAAO,OAAO;AAAA,IAErD,KAAK,oBAAoB;AACvB,aAAO,4BAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,oBAAoB;AACvB,aAAO,6BAA6B,OAAO,OAAO;AAAA,IAEpD,KAAK,oBAAoB;AACvB,aAAO,sCAAsC,OAAO,OAAO;AAAA,IAE7D,KAAK,oBAAoB;AACvB,aAAO,4BAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,oBAAoB;AACvB,aAAO,4BAA4B,OAAO,OAAO;AAAA,IAEnD,KAAK,oBAAoB;AACvB,aAAO,6BAA6B,OAAO,OAAO;AAAA,IAEpD,KAAK,oBAAoB;AACvB,aAAO,gCAAgC,OAAO,OAAO;AAAA,IAIvD;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -7,7 +7,9 @@ import thunk from "redux-thunk";
|
|
|
7
7
|
import { createSelector } from "reselect";
|
|
8
8
|
import { composeWithDevToolsDevelopmentOnly } from "@redux-devtools/extension";
|
|
9
9
|
import {
|
|
10
|
-
createReplacementContext
|
|
10
|
+
createReplacementContext,
|
|
11
|
+
replaceResourceIfNeeded,
|
|
12
|
+
ContextResource
|
|
11
13
|
} from "@makeswift/controls";
|
|
12
14
|
import { serializeState } from "../utils/serializeState";
|
|
13
15
|
import * as Documents from "./modules/read-only-documents";
|
|
@@ -26,7 +28,6 @@ import {
|
|
|
26
28
|
createElementTree,
|
|
27
29
|
deleteElementTree
|
|
28
30
|
} from "./actions";
|
|
29
|
-
import { copyElementReference } from "../prop-controllers/copy";
|
|
30
31
|
import {
|
|
31
32
|
copy as copyFromControl,
|
|
32
33
|
getTranslatableData,
|
|
@@ -121,7 +122,10 @@ function copyElementTree(state, elementTree, replacementContext) {
|
|
|
121
122
|
copyElement: copyElementTreeNode(state2, replacementContext2)
|
|
122
123
|
};
|
|
123
124
|
if (Documents.isElementReference(node)) {
|
|
124
|
-
return {
|
|
125
|
+
return {
|
|
126
|
+
...node,
|
|
127
|
+
value: replaceResourceIfNeeded(ContextResource.GlobalElement, node.value, context)
|
|
128
|
+
};
|
|
125
129
|
}
|
|
126
130
|
const descriptors = getComponentPropControllerDescriptors(state2, node.type);
|
|
127
131
|
if (descriptors == null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/state/react-page.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n type Dispatch as ReduxDispatch,\n type Middleware,\n type MiddlewareAPI,\n type Store as ReduxStore,\n} from 'redux'\n\nimport thunk, { ThunkDispatch } from 'redux-thunk'\nimport { createSelector } from 'reselect'\n\nimport { composeWithDevToolsDevelopmentOnly } from '@redux-devtools/extension'\n\nimport {\n createReplacementContext,\n type SerializableReplacementContext,\n type ReplacementContext,\n type TranslationDto,\n type MergeTranslatableDataContext,\n type MergeContext,\n} from '@makeswift/controls'\n\nimport { serializeState } from '../utils/serializeState'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Breakpoints from './modules/breakpoints'\nimport {\n type Action,\n ActionTypes,\n changeElementTree,\n createElementTree,\n deleteElementTree,\n} from './actions'\n\nimport { copyElementReference } from '../prop-controllers/copy'\nimport {\n copy as copyFromControl,\n getTranslatableData,\n merge,\n mergeTranslatedData,\n} from '../controls/control'\n\nimport { type SetupTeardownMixin, withSetupTeardown } from './mixins/setup-teardown'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\n\nexport {\n createBaseDocument,\n createDocumentReference,\n getRootElement,\n isElementReference,\n} from './modules/read-only-documents'\n\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getElementTreesSlice(state: State): ElementTrees.State {\n return state.elementTrees\n}\n\nexport function getElements(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elements'] {\n return ElementTrees.getElements(getElementTreesSlice(state), documentKey)\n}\n\nexport function getElementIds(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elementIds'] {\n return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(state: State): PropControllers.State {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): PropControllers.DescriptorsByProp | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n */\nexport const getDocumentKeysSortedByDepth: (state: State) => string[] = createSelector(\n [getDocumentsStateSlice, getElementTreesSlice],\n (documents, elementTrees) => {\n return [...documents.keys()].sort((a, b) => (elementTrees.get(a)?.elements.has(b) ? -1 : 1))\n },\n)\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return { ...node, value: copyElementReference(node.value, context) }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getElementTreeTranslatableData(\n state: State,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n const descriptors = getPropControllerDescriptors(state)\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementPescriptors = descriptors.get(element.type)\n if (elementPescriptors == null) continue\n\n Object.entries(elementPescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n\nexport function mergeElementTreeTranslatedData(\n state: State,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(state: State, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(node.type)\n\n if (descriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData,\n mergeTranslatedData: merge(state, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(state, translatedData)(elementTree)\n}\n\nexport function mergeElement(\n state: State,\n baseElement: Documents.Element,\n overrideElement: Documents.Element,\n): Documents.Element {\n if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {\n throw new Error(`Can't merge elements of different types or keys`)\n }\n\n if (Documents.isElementReference(overrideElement)) return overrideElement\n\n if (Documents.isElementReference(baseElement)) return baseElement\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(baseElement.type)\n\n if (descriptors == null) {\n throw new Error(\n `Can't merge element of type \"${baseElement.type}\" because it has no descriptors`,\n )\n }\n\n const mergedProps = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n const context: MergeContext = {\n mergeElement(base, override) {\n return mergeElement(state, base, override)\n },\n }\n\n mergedProps[propName] = merge(\n descriptor,\n baseElement.props[propName],\n overrideElement.props[propName],\n context,\n )\n }\n\n return { ...baseElement, props: mergedProps }\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport function getBreakpoints(state: State): Breakpoints.State {\n return state.breakpoints\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch } & SetupTeardownMixin\n\nexport function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n dispatch(\n createElementTree({\n document: action.payload.document,\n descriptors: getPropControllerDescriptors(getState()),\n }),\n )\n break\n\n case ActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n\n case ActionTypes.UNREGISTER_DOCUMENT:\n dispatch(deleteElementTree(action.payload))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function configureStore({\n name,\n preloadedState,\n breakpoints,\n}: {\n name: string\n preloadedState: Partial<State> | null\n breakpoints?: Breakpoints.State\n}): Store {\n const composeEnhancers = composeWithDevToolsDevelopmentOnly({\n name: `${name} (${new Date().toISOString()})`,\n serialize: true,\n stateSanitizer: (state: any) => serializeState(state),\n })\n\n return createStore(\n reducer,\n {\n ...preloadedState,\n breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints),\n },\n composeEnhancers(\n withSetupTeardown(\n () => {},\n () => {},\n ),\n applyMiddleware(thunk, elementTreeMiddleware()),\n ),\n )\n}\n"],"mappings":"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","names":["state","replacementContext","merge","translatedData"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/state/react-page.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n type Dispatch as ReduxDispatch,\n type Middleware,\n type MiddlewareAPI,\n type Store as ReduxStore,\n} from 'redux'\n\nimport thunk, { ThunkDispatch } from 'redux-thunk'\nimport { createSelector } from 'reselect'\n\nimport { composeWithDevToolsDevelopmentOnly } from '@redux-devtools/extension'\n\nimport {\n createReplacementContext,\n type SerializableReplacementContext,\n type ReplacementContext,\n type TranslationDto,\n type MergeTranslatableDataContext,\n type MergeContext,\n CopyContext,\n replaceResourceIfNeeded,\n ContextResource,\n} from '@makeswift/controls'\n\nimport { serializeState } from '../utils/serializeState'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Breakpoints from './modules/breakpoints'\nimport {\n type Action,\n ActionTypes,\n changeElementTree,\n createElementTree,\n deleteElementTree,\n} from './actions'\nimport {\n copy as copyFromControl,\n getTranslatableData,\n merge,\n mergeTranslatedData,\n} from '../controls/control'\n\nimport { type SetupTeardownMixin, withSetupTeardown } from './mixins/setup-teardown'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\n\nexport {\n createBaseDocument,\n createDocumentReference,\n getRootElement,\n isElementReference,\n} from './modules/read-only-documents'\n\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getElementTreesSlice(state: State): ElementTrees.State {\n return state.elementTrees\n}\n\nexport function getElements(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elements'] {\n return ElementTrees.getElements(getElementTreesSlice(state), documentKey)\n}\n\nexport function getElementIds(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elementIds'] {\n return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(state: State): PropControllers.State {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): PropControllers.DescriptorsByProp | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n */\nexport const getDocumentKeysSortedByDepth: (state: State) => string[] = createSelector(\n [getDocumentsStateSlice, getElementTreesSlice],\n (documents, elementTrees) => {\n return [...documents.keys()].sort((a, b) => (elementTrees.get(a)?.elements.has(b) ? -1 : 1))\n },\n)\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context: CopyContext = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return {\n ...node,\n value: replaceResourceIfNeeded(ContextResource.GlobalElement, node.value, context),\n }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getElementTreeTranslatableData(\n state: State,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n const descriptors = getPropControllerDescriptors(state)\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementPescriptors = descriptors.get(element.type)\n if (elementPescriptors == null) continue\n\n Object.entries(elementPescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n\nexport function mergeElementTreeTranslatedData(\n state: State,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(state: State, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(node.type)\n\n if (descriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData,\n mergeTranslatedData: merge(state, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(state, translatedData)(elementTree)\n}\n\nexport function mergeElement(\n state: State,\n baseElement: Documents.Element,\n overrideElement: Documents.Element,\n): Documents.Element {\n if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {\n throw new Error(`Can't merge elements of different types or keys`)\n }\n\n if (Documents.isElementReference(overrideElement)) return overrideElement\n\n if (Documents.isElementReference(baseElement)) return baseElement\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(baseElement.type)\n\n if (descriptors == null) {\n throw new Error(\n `Can't merge element of type \"${baseElement.type}\" because it has no descriptors`,\n )\n }\n\n const mergedProps = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n const context: MergeContext = {\n mergeElement(base, override) {\n return mergeElement(state, base, override)\n },\n }\n\n mergedProps[propName] = merge(\n descriptor,\n baseElement.props[propName],\n overrideElement.props[propName],\n context,\n )\n }\n\n return { ...baseElement, props: mergedProps }\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport function getBreakpoints(state: State): Breakpoints.State {\n return state.breakpoints\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch } & SetupTeardownMixin\n\nexport function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n dispatch(\n createElementTree({\n document: action.payload.document,\n descriptors: getPropControllerDescriptors(getState()),\n }),\n )\n break\n\n case ActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n\n case ActionTypes.UNREGISTER_DOCUMENT:\n dispatch(deleteElementTree(action.payload))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function configureStore({\n name,\n preloadedState,\n breakpoints,\n}: {\n name: string\n preloadedState: Partial<State> | null\n breakpoints?: Breakpoints.State\n}): Store {\n const composeEnhancers = composeWithDevToolsDevelopmentOnly({\n name: `${name} (${new Date().toISOString()})`,\n serialize: true,\n stateSanitizer: (state: any) => serializeState(state),\n })\n\n return createStore(\n reducer,\n {\n ...preloadedState,\n breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints),\n },\n composeEnhancers(\n withSetupTeardown(\n () => {},\n () => {},\n ),\n applyMiddleware(thunk, elementTreeMiddleware()),\n ),\n )\n}\n"],"mappings":"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","names":["state","replacementContext","merge","translatedData"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type Breakpoint, type BreakpointId, type Breakpoints, type ConfigType, type Data, type DataType, type DeviceOverride, type FallbackStrategy, type ValueType, type ResolvedValueType, type ResponsiveValue, type ControlMessage, type ReplacementContext, type SendMessageType, ControlDefinition, ControlInstance, DefaultControlInstance, ShapeV2Control, getBaseBreakpoint, getBreakpoint, findBreakpointOverride, findNextFallback, mergeOrCoalesceFallbacks, mergeResponsiveValues, shallowMergeFallbacks, getViewportStyle, } from '@makeswift/controls';
|
|
1
|
+
export { type Breakpoint, type BreakpointId, type Breakpoints, type ConfigType, type Data, type DataType, type DeviceOverride, type FallbackStrategy, type ValueType, type ResolvedValueType, type ResponsiveValue, type ControlMessage, type ReplacementContext, type SendMessageType, ControlDefinition, ControlInstance, DefaultControlInstance, ShapeV2Control, getBaseBreakpoint, getBreakpoint, findBreakpointOverride, findNextFallback, mergeOrCoalesceFallbacks, mergeResponsiveValues, shallowMergeFallbacks, getViewportStyle, replaceResourceIfNeeded, shouldRemoveResource, ContextResource, } from '@makeswift/controls';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAA"}
|
|
@@ -14,5 +14,6 @@ export default function redirectDraftHandler(request: NextRequest, context: Cont
|
|
|
14
14
|
export default function redirectDraftHandler(req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, { apiKey }: {
|
|
15
15
|
apiKey: string;
|
|
16
16
|
}): Promise<void>;
|
|
17
|
+
export declare function originalRequestProtocol(request: NextRequest): string | null;
|
|
17
18
|
export {};
|
|
18
19
|
//# sourceMappingURL=redirect-draft.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirect-draft.d.ts","sourceRoot":"","sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAevD,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAAA;AAE/D,KAAK,kBAAkB,GAAG,MAAM,CAAA;AAEhC,KAAK,QAAQ,GAAG,OAAO,CAAA;AAEvB,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AASjE,wBAA8B,oBAAoB,CAChD,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAC/C,wBAA8B,oBAAoB,CAChD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,CAAC,qBAAqB,CAAC,EAC3C,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"redirect-draft.d.ts","sourceRoot":"","sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAevD,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAAA;AAE/D,KAAK,kBAAkB,GAAG,MAAM,CAAA;AAEhC,KAAK,QAAQ,GAAG,OAAO,CAAA;AAEvB,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AASjE,wBAA8B,oBAAoB,CAChD,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAC/C,wBAA8B,oBAAoB,CAChD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,CAAC,qBAAqB,CAAC,EAC3C,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;AAUhB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAO3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-draft.test.d.ts","sourceRoot":"","sources":["../../../../../src/next/api-handler/handlers/redirect-draft.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type CopyContext } from '@makeswift/controls';
|
|
2
2
|
import { type Descriptor } from './descriptors';
|
|
3
3
|
export declare function copy(descriptor: Descriptor, value: any, context: CopyContext): any;
|
|
4
|
-
export declare function copyElementReference(value: string, context: CopyContext): string;
|
|
5
4
|
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/prop-controllers/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAiBtD,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAGnE,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,OA+C5E
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/prop-controllers/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAiBtD,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAGnE,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,OA+C5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-page.d.ts","sourceRoot":"","sources":["../../../src/state/react-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,UAAU,EAEf,KAAK,KAAK,IAAI,UAAU,EACzB,MAAM,OAAO,CAAA;AAEd,OAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKlD,OAAO,EAEL,KAAK,8BAA8B,EAEnC,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"react-page.d.ts","sourceRoot":"","sources":["../../../src/state/react-page.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makeswift/runtime",
|
|
3
|
-
"version": "0.24.4-canary.
|
|
3
|
+
"version": "0.24.4-canary.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -164,9 +164,9 @@
|
|
|
164
164
|
"use-sync-external-store": "^1.0.0-rc.0",
|
|
165
165
|
"uuid": "^9.0.0",
|
|
166
166
|
"zod": "^3.21.4",
|
|
167
|
-
"@makeswift/controls": "0.1.
|
|
168
|
-
"@makeswift/
|
|
169
|
-
"@makeswift/
|
|
167
|
+
"@makeswift/controls": "0.1.9-canary.0",
|
|
168
|
+
"@makeswift/next-plugin": "0.4.1",
|
|
169
|
+
"@makeswift/prop-controllers": "0.4.2-canary.0"
|
|
170
170
|
},
|
|
171
171
|
"devDependencies": {
|
|
172
172
|
"@emotion/jest": "^11.11.0",
|