@meetelise/studio-components 0.0.5 → 0.0.6

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/index.d.ts CHANGED
@@ -13,4 +13,6 @@ export { useFees } from "./hooks/useFees";
13
13
  export { useSpecials } from "./hooks/useSpecials";
14
14
  export { imageUrl } from "./utils/imageUrl";
15
15
  export { useAnalytics } from "./hooks/useAnalytics";
16
+ export { resolveConfig } from "./utils/resolveConfig";
17
+ export type { ResolveOptions, RawSiteConfig, ContentValue as ResolverContentValue, AssetValue as ResolverAssetValue } from "./utils/resolveConfig";
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpG,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpG,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,IAAI,oBAAoB,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -11,4 +11,5 @@ export { useFees } from "./hooks/useFees";
11
11
  export { useSpecials } from "./hooks/useSpecials";
12
12
  export { imageUrl } from "./utils/imageUrl";
13
13
  export { useAnalytics } from "./hooks/useAnalytics";
14
+ export { resolveConfig } from "./utils/resolveConfig";
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA6BpG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA6BpG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAKxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAY1D;AAkDD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,kDAiBlE"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAKxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAY1D;AA2ED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,kDAiBlE"}
package/dist/renderer.js CHANGED
@@ -32,24 +32,50 @@ function findPage(pages, path) {
32
32
  }
33
33
  return null;
34
34
  }
35
+ function setMetaTag(selector, attr, value, createTag) {
36
+ if (!value)
37
+ return;
38
+ let el = document.querySelector(selector);
39
+ if (!el && createTag) {
40
+ el = document.createElement("meta");
41
+ // Set identifying attributes so querySelector finds it next time
42
+ if (createTag.startsWith("property:"))
43
+ el.setAttribute("property", createTag.slice(9));
44
+ else if (createTag.startsWith("name:"))
45
+ el.setAttribute("name", createTag.slice(5));
46
+ document.head.appendChild(el);
47
+ }
48
+ if (el)
49
+ el.setAttribute(attr, value);
50
+ }
35
51
  function usePageMeta(path, page, siteMeta) {
36
52
  useEffect(() => {
37
- // Per-page meta from build-time injection or inline page.meta
38
53
  const pageMetas = typeof window !== "undefined" ? window.__STUDIO_PAGE_META__ : undefined;
39
54
  const meta = page?.meta ?? pageMetas?.[page?.path ?? ""];
40
55
  const title = meta?.title ?? siteMeta?.title;
56
+ const desc = meta?.description ?? siteMeta?.description;
57
+ const image = meta?.image ?? siteMeta?.image;
58
+ const baseUrl = siteMeta?.url ?? "";
59
+ const canonical = baseUrl ? `${baseUrl}${path === "/" ? "" : path}` : undefined;
41
60
  if (title)
42
61
  document.title = title;
43
- // Update meta description
44
- const desc = meta?.description ?? siteMeta?.description;
45
- if (desc) {
46
- let el = document.querySelector('meta[name="description"]');
47
- if (!el) {
48
- el = document.createElement("meta");
49
- el.setAttribute("name", "description");
50
- document.head.appendChild(el);
62
+ setMetaTag('meta[name="description"]', "content", desc, "name:description");
63
+ setMetaTag('meta[property="og:title"]', "content", title, "property:og:title");
64
+ setMetaTag('meta[property="og:description"]', "content", desc, "property:og:description");
65
+ setMetaTag('meta[property="og:url"]', "content", canonical, "property:og:url");
66
+ setMetaTag('meta[property="og:image"]', "content", image, "property:og:image");
67
+ setMetaTag('meta[name="twitter:title"]', "content", title, "name:twitter:title");
68
+ setMetaTag('meta[name="twitter:description"]', "content", desc, "name:twitter:description");
69
+ setMetaTag('meta[name="twitter:image"]', "content", image, "name:twitter:image");
70
+ // Update canonical link
71
+ if (canonical) {
72
+ let link = document.querySelector('link[rel="canonical"]');
73
+ if (!link) {
74
+ link = document.createElement("link");
75
+ link.setAttribute("rel", "canonical");
76
+ document.head.appendChild(link);
51
77
  }
52
- el.setAttribute("content", desc);
78
+ link.setAttribute("href", canonical);
53
79
  }
54
80
  }, [path, page, siteMeta]);
55
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Canonical content resolver for Elise Studio.
3
+ *
4
+ * Ported from site_compiler.py — this is the single source of truth for
5
+ * content resolution. Used by:
6
+ * - Live preview (client-side, in the CRM editor)
7
+ * - Preview renderer (postMessage listener)
8
+ * - Production compiler (via bun CLI wrapper)
9
+ *
10
+ * The resolver merges content blobs by scope, substitutes $key directives,
11
+ * interpolates {{variable}} tokens, resolves asset URLs, and expands
12
+ * BuildingSlice / building_template directives.
13
+ */
14
+ import type { SiteConfig } from "../types";
15
+ export type ContentValue = string | AssetValue | ContentValue[] | {
16
+ [key: string]: ContentValue;
17
+ };
18
+ export interface AssetValue {
19
+ asset: string;
20
+ w?: number | null;
21
+ h?: number | null;
22
+ }
23
+ export interface ResolveOptions {
24
+ rawSiteJson: RawSiteConfig;
25
+ contentBlobs: Record<string, Record<string, ContentValue>>;
26
+ assetManifest: Record<string, string[]>;
27
+ assetCdnBase: string;
28
+ buildingIds: number[];
29
+ preserveKeys?: boolean;
30
+ }
31
+ /** Raw site.json before resolution (has $key directives, building_template pages, etc.) */
32
+ export interface RawSiteConfig {
33
+ meta?: Record<string, unknown>;
34
+ theme?: Record<string, unknown>;
35
+ property?: Record<string, unknown>;
36
+ layouts?: Record<string, {
37
+ tree: RawNode;
38
+ }>;
39
+ pages?: RawPage[];
40
+ [key: string]: unknown;
41
+ }
42
+ interface RawPage {
43
+ path?: string;
44
+ tree?: RawNode;
45
+ building_template?: boolean;
46
+ layout?: string;
47
+ meta?: Record<string, unknown>;
48
+ [key: string]: unknown;
49
+ }
50
+ type RawNode = Record<string, unknown>;
51
+ export declare function resolveConfig(options: ResolveOptions): SiteConfig;
52
+ export {};
53
+ //# sourceMappingURL=resolveConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveConfig.d.ts","sourceRoot":"","sources":["../../src/utils/resolveConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,UAAU,GACV,YAAY,EAAE,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,aAAa,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,OAAO;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiRvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAqGjE"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Canonical content resolver for Elise Studio.
3
+ *
4
+ * Ported from site_compiler.py — this is the single source of truth for
5
+ * content resolution. Used by:
6
+ * - Live preview (client-side, in the CRM editor)
7
+ * - Preview renderer (postMessage listener)
8
+ * - Production compiler (via bun CLI wrapper)
9
+ *
10
+ * The resolver merges content blobs by scope, substitutes $key directives,
11
+ * interpolates {{variable}} tokens, resolves asset URLs, and expands
12
+ * BuildingSlice / building_template directives.
13
+ */
14
+ // Resolution order from most-specific to least-specific
15
+ const RESOLUTION_ORDER = ["building", "site", "org", "template", "global"];
16
+ // ---------------------------------------------------------------------------
17
+ // Pure helpers
18
+ // ---------------------------------------------------------------------------
19
+ function mergeBlobs(blobs) {
20
+ const merged = {};
21
+ // Apply in reverse resolution order (global first, building last)
22
+ for (let i = RESOLUTION_ORDER.length - 1; i >= 0; i--) {
23
+ const scope = RESOLUTION_ORDER[i];
24
+ const blob = blobs[scope];
25
+ if (blob) {
26
+ for (const [k, v] of Object.entries(blob)) {
27
+ merged[k] = v;
28
+ }
29
+ }
30
+ }
31
+ return merged;
32
+ }
33
+ function extractVars(merged) {
34
+ const result = {};
35
+ for (const [key, val] of Object.entries(merged)) {
36
+ if (key.startsWith("vars.") && typeof val === "string") {
37
+ result[key.slice(5)] = val;
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ function interpolate(text, varsMap) {
43
+ return text.replace(/\{\{(\w+)\}\}/g, (match, token) => varsMap[token] ?? match);
44
+ }
45
+ function isAssetValue(val) {
46
+ return (typeof val === "object" &&
47
+ val !== null &&
48
+ !Array.isArray(val) &&
49
+ "asset" in val &&
50
+ typeof val.asset === "string");
51
+ }
52
+ function resolveAssetUrl(filename, assetManifest, assetCdnBase, scopes) {
53
+ for (const scope of scopes) {
54
+ const files = assetManifest[scope];
55
+ if (files && files.includes(filename)) {
56
+ // Reconstruct the S3 key from scope prefix + filename
57
+ return `${assetCdnBase}/${scope}${filename}`;
58
+ }
59
+ }
60
+ return "";
61
+ }
62
+ function buildAssetScopes(siteId, orgId, templateId, buildingId) {
63
+ const scopes = [];
64
+ if (buildingId != null && siteId) {
65
+ scopes.push(`assets/site/${siteId}/building/${buildingId}/`);
66
+ }
67
+ if (siteId) {
68
+ scopes.push(`assets/site/${siteId}/`);
69
+ }
70
+ if (orgId != null) {
71
+ scopes.push(`assets/org/${orgId}/`);
72
+ }
73
+ if (templateId) {
74
+ scopes.push(`assets/template/${templateId}/`);
75
+ }
76
+ scopes.push("assets/global/");
77
+ return scopes;
78
+ }
79
+ function substituteNode(node, ctx) {
80
+ if (typeof node === "string") {
81
+ return interpolate(node, ctx.varsMap);
82
+ }
83
+ if (Array.isArray(node)) {
84
+ return node.map((item) => substituteNode(item, ctx));
85
+ }
86
+ if (typeof node === "object" && node !== null) {
87
+ const obj = node;
88
+ // BuildingSlice directive
89
+ if (obj["type"] === "BuildingSlice") {
90
+ return expandBuildingSlice(obj, ctx);
91
+ }
92
+ // $key content reference
93
+ const keys = Object.keys(obj);
94
+ if (keys.length === 1 && keys[0] === "$key") {
95
+ const key = obj["$key"];
96
+ const val = ctx.merged[key] ?? "";
97
+ let resolved;
98
+ if (isAssetValue(val)) {
99
+ resolved = resolveAssetUrl(val.asset, ctx.assetManifest, ctx.assetCdnBase, ctx.assetScopes);
100
+ }
101
+ else if (Array.isArray(val) || (typeof val === "object" && val !== null)) {
102
+ resolved = substituteNode(val, ctx);
103
+ }
104
+ else {
105
+ resolved = interpolate(String(val), ctx.varsMap);
106
+ }
107
+ if (ctx.preserveKeys) {
108
+ return { __key: key, __value: resolved };
109
+ }
110
+ return resolved;
111
+ }
112
+ // Regular dict — recurse into values
113
+ const result = {};
114
+ for (const [k, v] of Object.entries(obj)) {
115
+ result[k] = substituteNode(v, ctx);
116
+ }
117
+ return result;
118
+ }
119
+ // int, float, bool, null — pass through
120
+ return node;
121
+ }
122
+ function substituteTree(data, blobs, baseCtx, buildingId) {
123
+ const merged = mergeBlobs(blobs);
124
+ const varsMap = extractVars(merged);
125
+ const assetScopes = buildAssetScopes(baseCtx.siteId, baseCtx.orgId, baseCtx.templateId, buildingId);
126
+ const ctx = {
127
+ ...baseCtx,
128
+ merged,
129
+ varsMap,
130
+ assetScopes,
131
+ };
132
+ const result = {};
133
+ for (const [k, v] of Object.entries(data)) {
134
+ result[k] = substituteNode(v, ctx);
135
+ }
136
+ return result;
137
+ }
138
+ function expandBuildingSlice(node, ctx) {
139
+ const template = node["template"];
140
+ const props = node["props"] ?? {};
141
+ if (typeof template !== "object" || template === null || Array.isArray(template)) {
142
+ return { type: "Grid", props, children: [] };
143
+ }
144
+ const children = [];
145
+ for (const bid of ctx.buildingIds) {
146
+ const buildingBlob = ctx.buildingBlobCache[bid] ?? {};
147
+ const buildingBlobs = { ...ctx.commonBlobs, building: buildingBlob };
148
+ const baseCtx = {
149
+ assetManifest: ctx.assetManifest,
150
+ assetCdnBase: ctx.assetCdnBase,
151
+ preserveKeys: ctx.preserveKeys,
152
+ buildingIds: ctx.buildingIds,
153
+ buildingBlobCache: ctx.buildingBlobCache,
154
+ commonBlobs: ctx.commonBlobs,
155
+ siteId: ctx.siteId,
156
+ orgId: ctx.orgId,
157
+ templateId: ctx.templateId,
158
+ };
159
+ const resolved = substituteTree(template, buildingBlobs, baseCtx, bid);
160
+ children.push(resolved);
161
+ }
162
+ return { type: "Grid", props, children };
163
+ }
164
+ function replaceSlot(node, pageTree) {
165
+ const children = node["children"];
166
+ if (!Array.isArray(children))
167
+ return false;
168
+ for (let i = 0; i < children.length; i++) {
169
+ const child = children[i];
170
+ if (typeof child === "object" && child !== null && !Array.isArray(child)) {
171
+ const childObj = child;
172
+ if (childObj["type"] === "Slot") {
173
+ children[i] = pageTree;
174
+ return true;
175
+ }
176
+ if (replaceSlot(childObj, pageTree)) {
177
+ return true;
178
+ }
179
+ }
180
+ }
181
+ return false;
182
+ }
183
+ function resolveBuildingSlugs(buildingIds, buildingBlobCache, commonBlobs) {
184
+ const slugs = {};
185
+ for (const bid of buildingIds) {
186
+ const buildingBlob = buildingBlobCache[bid] ?? {};
187
+ const merged = mergeBlobs({ ...commonBlobs, building: buildingBlob });
188
+ const raw = merged["vars.slug"];
189
+ const slug = typeof raw === "string" ? raw : "";
190
+ if (slug) {
191
+ slugs[String(bid)] = slug;
192
+ }
193
+ }
194
+ return slugs;
195
+ }
196
+ // ---------------------------------------------------------------------------
197
+ // Main resolver
198
+ // ---------------------------------------------------------------------------
199
+ export function resolveConfig(options) {
200
+ const { rawSiteJson, contentBlobs, assetManifest, assetCdnBase, buildingIds, preserveKeys = false, } = options;
201
+ // Pre-fetch all building blobs from the content blobs input
202
+ const buildingBlobCache = {};
203
+ for (const bid of buildingIds) {
204
+ const key = `building_${bid}`;
205
+ buildingBlobCache[bid] = (contentBlobs[key] ?? {});
206
+ }
207
+ const commonBlobs = {
208
+ global: contentBlobs["global"] ?? {},
209
+ template: contentBlobs["template"] ?? {},
210
+ org: contentBlobs["org"] ?? {},
211
+ site: contentBlobs["site"] ?? {},
212
+ };
213
+ const siteBlobs = { ...commonBlobs, building: {} };
214
+ // Extract site context from rawSiteJson for asset scope resolution
215
+ // (orgId/templateId are not in site.json — they come from DynamoDB in production.
216
+ // For client-side preview, we pass them via contentBlobs keys or infer from context.)
217
+ const siteId = rawSiteJson.siteId;
218
+ const orgId = rawSiteJson._orgId;
219
+ const templateId = rawSiteJson._templateId;
220
+ const baseCtx = {
221
+ assetManifest,
222
+ assetCdnBase,
223
+ preserveKeys,
224
+ buildingIds,
225
+ buildingBlobCache,
226
+ commonBlobs,
227
+ siteId,
228
+ orgId,
229
+ templateId,
230
+ };
231
+ // Resolve top-level fields (meta, theme, property) without building scope
232
+ const rawLayouts = rawSiteJson.layouts ?? {};
233
+ const siteMinusPages = {};
234
+ for (const [k, v] of Object.entries(rawSiteJson)) {
235
+ if (k !== "pages" && k !== "layouts") {
236
+ siteMinusPages[k] = v;
237
+ }
238
+ }
239
+ const resolvedBase = substituteTree(siteMinusPages, siteBlobs, baseCtx, null);
240
+ // Resolve building slugs
241
+ const buildingSlugs = resolveBuildingSlugs(buildingIds, buildingBlobCache, commonBlobs);
242
+ // Resolve each page
243
+ const rawPages = rawSiteJson.pages ?? [];
244
+ const resolvedPages = [];
245
+ for (const page of rawPages) {
246
+ if (page.building_template) {
247
+ // Expand building template into one page per building
248
+ for (const bid of buildingIds) {
249
+ const buildingBlob = buildingBlobCache[bid] ?? {};
250
+ const buildingBlobs = { ...commonBlobs, building: buildingBlob };
251
+ const resolvedPage = {
252
+ ...substituteTree(page, buildingBlobs, baseCtx, bid),
253
+ };
254
+ delete resolvedPage["building_template"];
255
+ applyLayout(resolvedPage, rawLayouts, buildingBlobs, baseCtx, bid);
256
+ resolvedPages.push(resolvedPage);
257
+ }
258
+ }
259
+ else {
260
+ const resolvedPage = substituteTree(page, siteBlobs, baseCtx, null);
261
+ applyLayout(resolvedPage, rawLayouts, siteBlobs, baseCtx, null);
262
+ resolvedPages.push(resolvedPage);
263
+ }
264
+ }
265
+ const resolvedData = { ...resolvedBase };
266
+ resolvedData["pages"] = resolvedPages;
267
+ if (Object.keys(buildingSlugs).length > 0) {
268
+ resolvedData["buildingSlugs"] = buildingSlugs;
269
+ }
270
+ // Strip internal-only fields
271
+ delete resolvedData["_orgId"];
272
+ delete resolvedData["_templateId"];
273
+ return resolvedData;
274
+ }
275
+ function applyLayout(resolvedPage, rawLayouts, blobs, baseCtx, buildingId) {
276
+ const layoutName = resolvedPage["layout"];
277
+ if (!layoutName)
278
+ return;
279
+ delete resolvedPage["layout"];
280
+ const layoutDef = rawLayouts[layoutName];
281
+ if (!layoutDef?.tree)
282
+ return;
283
+ const resolved = substituteTree({ _tree: layoutDef.tree }, blobs, baseCtx, buildingId);
284
+ const mergedTree = JSON.parse(JSON.stringify(resolved["_tree"]));
285
+ const pageTree = (resolvedPage["tree"] ?? {});
286
+ const found = replaceSlot(mergedTree, pageTree);
287
+ if (found) {
288
+ resolvedPage["tree"] = mergedTree;
289
+ }
290
+ }
291
+ //# sourceMappingURL=resolveConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveConfig.js","sourceRoot":"","sources":["../../src/utils/resolveConfig.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meetelise/studio-components",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Elise Studio component library — renderer, layout primitives, and data-fetching components for property websites",
5
5
  "repository": {
6
6
  "type": "git",