create-ec-app 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -88,18 +88,12 @@ That shared CSS defines shadcn's Tailwind v4 custom variants and utilities, incl
88
88
 
89
89
  After generation, the CLI applies small compatibility fixes for app embedding:
90
90
 
91
- - Radix/Base UI portals render into the app-local portal root from `EcAppShell`.
91
+ - Radix/Base UI portals are prepared to use a PCF-local portal root when a PCF wrapper is generated.
92
92
  - Known generated selector issues are normalized so builds stay clean with current Vite/Tailwind.
93
93
 
94
94
  ## Style Scoping
95
95
 
96
- Generated apps use normal Tailwind/shadcn CSS by default. `EcAppShell` is still present, but its job is to provide an app-local portal root for Radix/Base UI overlays:
97
-
98
- ```tsx
99
- <div data-ec-app-root="">
100
- ```
101
-
102
- When a webresource is converted into a PCF wrapper, the generator creates a local `pcf-scoped.css` file in the generated PCF project. That file is copied from the built `dist/main.css` with CSS custom-property rules rewritten under the PCF host selector, so shadcn/Tailwind theme variables stay inside that control without prefixing or scoping every utility selector.
96
+ Generated webresources use normal Tailwind/shadcn CSS by default. When a webresource is converted into a PCF wrapper, the generator creates a local PCF shell and a local `pcf-scoped.css` file in the generated PCF project. That CSS file is copied from the built `dist/main.css` with every non-keyframe selector rewritten under the `.pcf-shell-control[data-pcf-control="..."]` host selector, so Tailwind utilities, base selectors, and shadcn/Tailwind theme variables stay inside that control.
103
97
 
104
98
  ## Template Updates
105
99
 
@@ -123,10 +117,15 @@ Basic flow:
123
117
  npm run build
124
118
  ```
125
119
 
126
- 2. Run the generator and point `--pcf-dir` at the generated PCF project directory:
120
+ 2. Run the generator from the webresource root. Point `--pcf-dir` at the webresource root and `--output` at the PCF project folder you want to generate:
127
121
 
128
122
  ```bash
129
- npx create-ec-app@latest --pcf-dir ./pcf/{{ControlName}} namespace {{EC}} --constructor {{ControlName}} --display-name "Control Name"
123
+ npx create-ec-app@latest \
124
+ --pcf-dir . \
125
+ --output ./pcf/{{ControlName}} \
126
+ --namespace EC \
127
+ --constructor {{ControlName}} \
128
+ --display-name "Control Name"
130
129
  ```
131
130
 
132
131
  3. Install dependencies inside that generated PCF directory:
@@ -134,33 +133,41 @@ npx create-ec-app@latest --pcf-dir ./pcf/{{ControlName}} namespace {{EC}} --cons
134
133
  ```bash
135
134
  cd ./pcf/{{ControlName}}
136
135
  npm install
136
+ npm run build
137
137
  ```
138
138
 
139
139
  This writes a standalone PCF project to the `--pcf-dir` folder. The generated control:
140
140
 
141
141
  - imports `src/App.tsx` directly instead of wrapping built HTML in an iframe
142
142
  - creates and imports `pcf-scoped.css` from the built `dist/main.css`
143
+ - scopes every non-keyframe CSS selector under the generated PCF host selector
143
144
  - creates `src/runtime/types.ts` only if that file does not already exist
144
145
  - provides a runtime object with record context and `context.webAPI` access inside the generated PCF shell, following the `PcfBase` pattern
145
146
  - mounts your React app directly into the PCF container
146
147
 
147
- Typical conversion flow from inside a generated webresource project:
148
+ Regenerate after app code or CSS changes by running the same sequence again from the webresource root:
148
149
 
149
150
  ```bash
150
- npm install
151
151
  npm run build
152
- npx create-ec-app@latest --pcf-dir ./pcf/FusionNotebookHost namespace EC --constructor FusionNotebookHost --display-name "Fusion Notebook Host"
152
+ npx create-ec-app@latest \
153
+ --pcf-dir . \
154
+ --output ./pcf/FusionNotebookHost \
155
+ --namespace EC \
156
+ --constructor FusionNotebookHost \
157
+ --display-name "Fusion Notebook Host"
153
158
  cd pcf/FusionNotebookHost
154
159
  npm install
155
160
  npm run build
156
161
  ```
157
162
 
163
+ Regeneration removes and recreates the PCF output folder, so keep durable app code in `src` and use generator templates or layers for repeatable PCF-specific changes.
164
+
158
165
  What gets generated:
159
166
 
160
167
  - a minimal PCF wrapper project under `pcf/<ConstructorName>`
161
168
  - a checked-in PCF shell stamped out from `create-ec-app/templates/pcf/base`
162
169
  - direct imports back to your webresource source
163
- - a generated `pcf-scoped.css` file with CSS custom properties scoped to the PCF control
170
+ - a generated `pcf-scoped.css` file with CSS selectors scoped to the PCF control
164
171
 
165
172
  What does not happen:
166
173
 
@@ -1,3 +1,4 @@
1
1
  export declare const PCF_SCOPED_CSS_FILE = "pcf-scoped.css";
2
- export declare function scopeCssVariablesForPcf(css: string, controlName: string): string;
2
+ export declare function scopeCssForPcf(css: string, controlName: string): string;
3
+ export declare const scopeCssVariablesForPcf: typeof scopeCssForPcf;
3
4
  //# sourceMappingURL=cssScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssScope.d.ts","sourceRoot":"","sources":["../src/cssScope.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GACjB,MAAM,CAgBR"}
1
+ {"version":3,"file":"cssScope.d.ts","sourceRoot":"","sources":["../src/cssScope.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,wBAAgB,cAAc,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GACjB,MAAM,CAgBR;AAED,eAAO,MAAM,uBAAuB,uBAAiB,CAAC"}
package/dist/cssScope.js CHANGED
@@ -1,21 +1,32 @@
1
1
  import postcss from "postcss";
2
2
  export const PCF_SCOPED_CSS_FILE = "pcf-scoped.css";
3
- export function scopeCssVariablesForPcf(css, controlName) {
4
- const scopeSelector = `.ec-pcf-shell-control[data-ec-pcf-control="${escapeCssAttributeValue(controlName)}"]`;
3
+ export function scopeCssForPcf(css, controlName) {
4
+ const scopeSelector = `.pcf-shell-control[data-pcf-control="${escapeCssAttributeValue(controlName)}"]`;
5
5
  const root = postcss.parse(css);
6
6
  root.walkRules((rule) => {
7
- if (!rule.nodes?.some(isCustomPropertyDeclaration)) {
7
+ if (isKeyframesRule(rule)) {
8
8
  return;
9
9
  }
10
10
  rule.selector = scopeSelectorList(rule.selector, scopeSelector);
11
11
  });
12
12
  return [
13
- "/* Generated by create-ec-app. CSS custom properties are scoped to this PCF control. */",
13
+ "/* Generated by create-ec-app. CSS selectors are scoped to this PCF control. */",
14
14
  root.toString(),
15
15
  ].join("\n");
16
16
  }
17
- function isCustomPropertyDeclaration(node) {
18
- return node.type === "decl" && node.prop.startsWith("--");
17
+ export const scopeCssVariablesForPcf = scopeCssForPcf;
18
+ function isKeyframesRule(rule) {
19
+ let parent = rule.parent;
20
+ while (parent) {
21
+ if (parent.type === "atrule") {
22
+ const atRule = parent;
23
+ if (atRule.name.toLowerCase().endsWith("keyframes")) {
24
+ return true;
25
+ }
26
+ }
27
+ parent = parent.parent;
28
+ }
29
+ return false;
19
30
  }
20
31
  function scopeSelectorList(selectorList, scopeSelector) {
21
32
  const scopedSelectors = new Set();
@@ -37,9 +48,14 @@ function scopeSingleSelector(selector, scopeSelector) {
37
48
  if (normalized === ":root" ||
38
49
  normalized === ":host" ||
39
50
  normalized === "html" ||
51
+ normalized === "body" ||
52
+ normalized === "[data-ec-app-root]" ||
40
53
  /^\.ec-app(?:\[.*?\])?$/.test(normalized)) {
41
54
  return [scopeSelector];
42
55
  }
56
+ if (normalized === "*") {
57
+ return [scopeSelector, `${scopeSelector} *`];
58
+ }
43
59
  if (normalized === ".dark" ||
44
60
  /^\.ec-app(?:\[.*?\])?\.dark$/.test(normalized)) {
45
61
  return [`${scopeSelector}.dark`, `${scopeSelector} .dark`];
@@ -1 +1 @@
1
- {"version":3,"file":"cssScope.js","sourceRoot":"","sources":["../src/cssScope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cssScope.js","sourceRoot":"","sources":["../src/cssScope.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ import { cancel, intro, isCancel, log, outro, select, spinner, text, } from "@cl
5
5
  import fs from "fs-extra";
6
6
  import { applyLayer, replaceTokensRecursively } from "./libFunctions.js";
7
7
  import { generatePcfFromExistingWebresource } from "./pcf.js";
8
+ import { localizeShadcnPortals } from "./portalContainers.js";
8
9
  const { execSync } = await import("node:child_process");
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = dirname(__filename);
@@ -112,24 +113,6 @@ async function generateShadcnUi(projectDir) {
112
113
  await localizeShadcnPortals(projectDir);
113
114
  return true;
114
115
  }
115
- async function localizeShadcnPortals(projectDir) {
116
- const componentsDir = path.join(projectDir, "src", "components", "ui");
117
- if (!(await fs.pathExists(componentsDir))) {
118
- return;
119
- }
120
- const entries = await fs.readdir(componentsDir, { withFileTypes: true });
121
- for (const entry of entries) {
122
- if (!entry.isFile() || !entry.name.endsWith(".tsx")) {
123
- continue;
124
- }
125
- const filePath = path.join(componentsDir, entry.name);
126
- const source = await fs.readFile(filePath, "utf8");
127
- const updated = withGeneratedShadcnCompatibility(withEcPortalContainers(source, filePath));
128
- if (updated !== source) {
129
- await fs.writeFile(filePath, updated, "utf8");
130
- }
131
- }
132
- }
133
116
  async function cleanupCodeAppsScaffold(projectDir) {
134
117
  const pathsToRemove = [
135
118
  "token.json",
@@ -152,78 +135,6 @@ async function removeDirIfEmpty(dirPath) {
152
135
  await fs.remove(dirPath);
153
136
  }
154
137
  }
155
- function withEcPortalContainers(source, filePath) {
156
- const withPortalContainers = source.replace(/<([A-Za-z][A-Za-z0-9]*Primitive)\.Portal\b(?![^>]*\bcontainer=)/g, "<$1.Portal container={portalContainer ?? undefined}");
157
- if (withPortalContainers === source) {
158
- return source;
159
- }
160
- return addEcPortalImport(addEcPortalHookDeclarations(withPortalContainers, filePath));
161
- }
162
- function withGeneratedShadcnCompatibility(source) {
163
- const withChartAttributeSelectors = removeStandaloneEcPrefixes(source)
164
- .replace(/\[stroke=#ccc\]/g, "[stroke='#ccc']")
165
- .replace(/\[stroke=#fff\]/g, "[stroke='#fff']");
166
- if (!withChartAttributeSelectors.includes('from "react-day-picker"')) {
167
- return withChartAttributeSelectors;
168
- }
169
- return withChartAttributeSelectors.replace(/(\n\s*)table:/g, "$1month_grid:");
170
- }
171
- function removeStandaloneEcPrefixes(source) {
172
- let updated = source;
173
- let previous;
174
- do {
175
- previous = updated;
176
- updated = updated.replace(/(^|[\s"'])ec:(?=\s|["'])/g, "$1");
177
- } while (updated !== previous);
178
- return updated;
179
- }
180
- function addEcPortalImport(source) {
181
- if (source.includes('from "@/runtime/EcAppShell"')) {
182
- return source;
183
- }
184
- const importPattern = /import[\s\S]*?from\s+["'][^"']+["'];?\n|import\s+["'][^"']+["'];?\n/g;
185
- let insertAt = 0;
186
- for (const match of source.matchAll(importPattern)) {
187
- insertAt = (match.index ?? 0) + match[0].length;
188
- }
189
- const importLine = 'import { useEcPortalContainer } from "@/runtime/EcAppShell"\n';
190
- return `${source.slice(0, insertAt)}${importLine}${source.slice(insertAt)}`;
191
- }
192
- function addEcPortalHookDeclarations(source, filePath) {
193
- const lines = source.split("\n");
194
- const hookBodyLines = new Set();
195
- for (let index = 0; index < lines.length; index += 1) {
196
- if (!lines[index]?.includes("container={portalContainer ?? undefined}")) {
197
- continue;
198
- }
199
- const bodyLine = findContainingFunctionBodyLine(lines, index);
200
- if (bodyLine === undefined) {
201
- throw new Error(`Could not locate a function body for a shadcn Portal in ${filePath}.`);
202
- }
203
- hookBodyLines.add(bodyLine);
204
- }
205
- for (const bodyLine of [...hookBodyLines].sort((a, b) => b - a)) {
206
- if (lines[bodyLine + 1]?.includes("const portalContainer")) {
207
- continue;
208
- }
209
- const indent = lines[bodyLine]?.match(/^(\s*)/)?.[1] ?? "";
210
- lines.splice(bodyLine + 1, 0, `${indent} const portalContainer = useEcPortalContainer()`);
211
- }
212
- return lines.join("\n");
213
- }
214
- function findContainingFunctionBodyLine(lines, portalLine) {
215
- for (let index = portalLine; index >= 0; index -= 1) {
216
- if (!/^\s*function\s+\w+/.test(lines[index] ?? "")) {
217
- continue;
218
- }
219
- for (let bodyLine = index; bodyLine <= portalLine; bodyLine += 1) {
220
- if (/\)\s*\{\s*$/.test(lines[bodyLine] ?? "")) {
221
- return bodyLine;
222
- }
223
- }
224
- }
225
- return undefined;
226
- }
227
138
  main().catch((err) => {
228
139
  console.error(err);
229
140
  process.exit(1);
@@ -429,7 +340,6 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
429
340
  import "@progress/kendo-theme-fluent/dist/all.css";
430
341
  import "./index.css";
431
342
  import App from "./App.tsx";
432
- import { EcAppShell } from "./runtime/EcAppShell.tsx";
433
343
 
434
344
  import { AuthProvider } from "./context/AuthContext.tsx";
435
345
 
@@ -452,9 +362,7 @@ root.render(
452
362
  <StrictMode>
453
363
  <AuthProvider>
454
364
  <QueryClientProvider client={queryClient}>
455
- <EcAppShell>
456
- <App />
457
- </EcAppShell>
365
+ <App />
458
366
  </QueryClientProvider>
459
367
  </AuthProvider>
460
368
  </StrictMode>
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,GACJ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAKxD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAoBtC,KAAK,UAAU,IAAI;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,kCAAkC,CAAC;YACvD,MAAM;YACN,GAAG,cAAc,CAAC,IAAI,CAAC;SACvB,CAAC,CAAC;QACH,KAAK,CACJ,4BAA4B,MAAM,CAAC,SAAS,mBAAmB,MAAM,CAAC,WAAW,EAAE,CACnF,CAAC;QACF,OAAO;IACR,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEtD,GAAG,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACrD,GAAG,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/C,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/B,KAAK,CACJ,cAAc,OAAO,CAAC,WAAW,OAAO,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,6CAA6C,CAC1H,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,sBAAsB,GAC3B,OAAO,CAAC,OAAO,KAAK,SAAS;QAC7B,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,sBAAsB;QACrC,CAAC,CAAC,MAAM,yBAAyB,EAAE;QACnC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAE5B,OAAO;QACN,OAAO;QACP,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;QAC/B,MAAM;QACN,MAAM;KACN,CAAC;AACH,CAAC;AASD,KAAK,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,WAAW,EACX,MAAM,EACN,MAAM,GACW;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAErD,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,wBAAwB,CAAC,UAAU,EAAE;QAC1C,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,MAAM;QACd,EAAE,EAAE,MAAM;KACV,CAAC,CAAC;IAEH,MAAM,kCAAkC,GACvC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,kFAAkF;IAClF,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxD,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACnC,CAAC;IAED,iFAAiF;IACjF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,gCAAgC,EAAE;QAC1C,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACJ,QAAQ,CAAC,+CAA+C,EAAE;YACzD,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACb,CAAC;IAED,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACtD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,gCAAgC,CAC/C,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CACxC,CAAC;QAEF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,UAAkB;IACxD,MAAM,aAAa,GAAG;QACrB,YAAY;QACZ,6BAA6B;QAC7B,6BAA6B;QAC7B,6BAA6B;KAC7B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc,EAAE,QAAgB;IAC/D,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAC1C,kEAAkE,EAClE,qDAAqD,CACrD,CAAC;IAEF,IAAI,oBAAoB,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,iBAAiB,CACvB,2BAA2B,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAC3D,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAc;IACvD,MAAM,2BAA2B,GAAG,0BAA0B,CAAC,MAAM,CAAC;SACpE,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;SAC9C,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAEjD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACtE,OAAO,2BAA2B,CAAC;IACpC,CAAC;IAED,OAAO,2BAA2B,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc;IACjD,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,GAAG,CAAC;QACH,QAAQ,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,QAAQ,OAAO,KAAK,QAAQ,EAAE;IAE/B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAClB,sEAAsE,CAAC;IACxE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpD,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GACf,+DAA+D,CAAC;IAEjE,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAc,EAAE,QAAgB;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,0CAA0C,CAAC,EAAE,CAAC;YACzE,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,2DAA2D,QAAQ,GAAG,CACtE,CAAC;QACH,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC5D,SAAS;QACV,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,KAAK,CAAC,MAAM,CACX,QAAQ,GAAG,CAAC,EACZ,CAAC,EACD,GAAG,MAAM,kDAAkD,CAC3D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,8BAA8B,CACtC,KAAe,EACf,UAAkB;IAElB,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,SAAS;QACV,CAAC;QAED,KACC,IAAI,QAAQ,GAAG,KAAK,EACpB,QAAQ,IAAI,UAAU,EACtB,QAAQ,IAAI,CAAC,EACZ,CAAC;YACF,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC/C,OAAO,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;QACvB,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAY;QACtC,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE;YACR,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE;YAC/C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC1C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE;YACzC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC9C,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,EAAE;SACpD;KACD,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAW;QACrC,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE;YACR,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;YACrC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;SAC1C;KACD,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,KAAK,UAAU,yBAAyB;IACvC,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAmB;QAC1D,OAAO,EAAE,sCAAsC;QAC/C,OAAO,EAAE;YACR,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;SACtC;KACD,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,mBAAmB,CAAC,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,8BAA8B,CAAC;IAC9D,IAAI,KAAK,CAAC,iBAAiB,EAAE,KAAK,KAAK;QACtC,OAAO,gCAAgC,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,oCAAoC,CAAC;IAClE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,OAAO,0EAA0E,CAAC;IACnF,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IACnC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC;QAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,IACC,GAAG,KAAK,IAAI;gBACZ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EACjC,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAW,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAElF,OAAO;QACN,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,GAAG,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjD,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjD,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;KAC9B,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CACf,GAAM,EACN,KAA6B;IAE7B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAuB,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IACjC,MAAM,WAAW,GAA+B;QAC/C,CAAC,eAAe,EAAE,aAAa,CAAC;QAChC,CAAC,UAAU,EAAE,QAAQ,CAAC;QACtB,CAAC,eAAe,EAAE,aAAa,CAAC;QAChC,CAAC,OAAO,EAAE,KAAK,CAAC;QAChB,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,YAAY,EAAE,WAAW,CAAC;KAC3B,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACd,kHAAkH,CAClH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,KAAK,CACd,uBAAuB,WAAW,6DAA6D,CAC/F,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IACjC,MAAM,OAAO,GAA8B;QAC1C,CAAC,SAAS,EAAE,OAAO,CAAC;QACpB,CAAC,UAAU,EAAE,WAAW,CAAC;QACzB,CAAC,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACd,kEAAkE,CAClE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,qCAAqC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,IAAY;IACrD,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACrE,IAAI,WAAW,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IACjC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAChC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc,CAAoC,KAAQ;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAe,CAAC;AAClD,CAAC;AAED,kBAAkB;AAClB,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmChC,CAAC;AAEJ,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4FT,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/pcf.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pcf.d.ts","sourceRoot":"","sources":["../src/pcf.ts"],"names":[],"mappings":"AAsDA,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAsB,kCAAkC,CACvD,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC;IACV,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC,CAmGD"}
1
+ {"version":3,"file":"pcf.d.ts","sourceRoot":"","sources":["../src/pcf.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAsB,kCAAkC,CACvD,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC;IACV,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC,CAyGD"}
package/dist/pcf.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import path, { dirname } from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
3
  import fs from "fs-extra";
4
- import { PCF_SCOPED_CSS_FILE, scopeCssVariablesForPcf, } from "./cssScope.js";
4
+ import { PCF_SCOPED_CSS_FILE, scopeCssForPcf, } from "./cssScope.js";
5
5
  import { applyLayer, replaceTokensRecursively } from "./libFunctions.js";
6
+ import { ensurePortalContainerRuntime, localizeShadcnPortals, } from "./portalContainers.js";
6
7
  const __filename = fileURLToPath(import.meta.url);
7
8
  const __dirname = dirname(__filename);
8
9
  const RUNTIME_TYPES_TEMPLATE = `export interface PcfWebApi {
@@ -21,30 +22,6 @@ export interface PcfRuntimeContext {
21
22
  \twebApi: PcfWebApi;
22
23
  }
23
24
  `;
24
- function createAppShellTemplate() {
25
- return `import * as React from "react";
26
-
27
- const EcPortalContainerContext = React.createContext<HTMLElement | null>(null);
28
-
29
- export function useEcPortalContainer() {
30
- \treturn React.useContext(EcPortalContainerContext);
31
- }
32
-
33
- export function EcAppShell({ children }: { children: React.ReactNode }) {
34
- \tconst [portalContainer, setPortalContainer] =
35
- \t\tReact.useState<HTMLDivElement | null>(null);
36
-
37
- \treturn (
38
- \t\t<div data-ec-app-root="">
39
- \t\t\t<EcPortalContainerContext.Provider value={portalContainer}>
40
- \t\t\t\t{children}
41
- \t\t\t\t<div data-ec-portal-root="" ref={setPortalContainer} />
42
- \t\t\t</EcPortalContainerContext.Provider>
43
- \t\t</div>
44
- \t);
45
- }
46
- `;
47
- }
48
25
  export async function generatePcfFromExistingWebresource(options) {
49
26
  const projectDir = path.resolve(process.cwd(), options.pcfDir);
50
27
  const packageJson = await readJson(path.join(projectDir, "package.json"));
@@ -65,15 +42,18 @@ export async function generatePcfFromExistingWebresource(options) {
65
42
  const packageNameToken = options.packageName ?? toKebabCase(constructorName);
66
43
  const relToProject = toPosixPath(path.relative(outputDir, projectDir) || ".");
67
44
  const appImportPath = ensureRelativeImport(toPosixPath(path.relative(outputDir, path.join(projectDir, "src", "App"))));
68
- const appShellImportPath = ensureRelativeImport(toPosixPath(path.relative(outputDir, path.join(projectDir, "src", "runtime", "EcAppShell"))));
45
+ const portalContainerImportPath = ensureRelativeImport(toPosixPath(path.relative(path.join(outputDir, "runtime"), path.join(projectDir, "src", "runtime", "PortalContainer"))));
69
46
  const runtimeTypesImportPath = ensureRelativeImport(toPosixPath(path.relative(outputDir, path.join(projectDir, "src", "runtime", "types"))));
70
47
  const sourceCssPath = path.join(projectDir, distDirName, "main.css");
71
48
  const cssImportPath = ensureRelativeImport(PCF_SCOPED_CSS_FILE);
72
49
  await assertFileExists(path.join(projectDir, "src", "App.tsx"), `Could not find src/App.tsx in ${projectDir}.`);
73
50
  await assertFileExists(sourceCssPath, `Could not find ${distDirName}/main.css in ${projectDir}. Run the webresource build first.`);
74
51
  await ensureRuntimeTypes(projectDir);
75
- await ensureAppShell(projectDir);
76
- const pcfCss = scopeCssVariablesForPcf(await fs.readFile(sourceCssPath, "utf8"), constructorName);
52
+ await ensurePortalContainerRuntime(projectDir);
53
+ await localizeShadcnPortals(projectDir, {
54
+ includeGeneratedCompatibility: false,
55
+ });
56
+ const pcfCss = scopeCssForPcf(await fs.readFile(sourceCssPath, "utf8"), constructorName);
77
57
  await fs.remove(outputDir);
78
58
  await applyLayer(templateDir, outputDir);
79
59
  for (const layerDir of layerDirs) {
@@ -89,7 +69,7 @@ export async function generatePcfFromExistingWebresource(options) {
89
69
  PCF_VERSION: version,
90
70
  PROJECT_APP_IMPORT: appImportPath,
91
71
  PROJECT_CSS_IMPORT: cssImportPath,
92
- PROJECT_EC_APP_SHELL_IMPORT: appShellImportPath,
72
+ PROJECT_PORTAL_CONTAINER_IMPORT: portalContainerImportPath,
93
73
  PROJECT_NODE_MODULES_TYPES_ROOT: `${relToProject}/node_modules/@types`,
94
74
  PROJECT_REACT_ALIAS: `${relToProject}/node_modules/react`,
95
75
  PROJECT_REACT_DOM_ALIAS: `${relToProject}/node_modules/react-dom`,
@@ -113,14 +93,6 @@ async function ensureRuntimeTypes(projectDir) {
113
93
  await fs.ensureDir(path.dirname(runtimeTypesPath));
114
94
  await fs.writeFile(runtimeTypesPath, RUNTIME_TYPES_TEMPLATE, "utf8");
115
95
  }
116
- async function ensureAppShell(projectDir) {
117
- const appShellPath = path.join(projectDir, "src", "runtime", "EcAppShell.tsx");
118
- if (await fs.pathExists(appShellPath)) {
119
- return;
120
- }
121
- await fs.ensureDir(path.dirname(appShellPath));
122
- await fs.writeFile(appShellPath, createAppShellTemplate(), "utf8");
123
- }
124
96
  async function readJson(filePath) {
125
97
  try {
126
98
  return await fs.readJson(filePath);
package/dist/pcf.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pcf.js","sourceRoot":"","sources":["../src/pcf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcf.js","sourceRoot":"","sources":["../src/pcf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function ensurePortalContainerRuntime(projectDir: string): Promise<void>;
2
+ interface LocalizeShadcnPortalsOptions {
3
+ includeGeneratedCompatibility?: boolean;
4
+ }
5
+ export declare function localizeShadcnPortals(projectDir: string, options?: LocalizeShadcnPortalsOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=portalContainers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portalContainers.d.ts","sourceRoot":"","sources":["../src/portalContainers.ts"],"names":[],"mappings":"AAaA,wBAAsB,4BAA4B,CACjD,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,UAAU,4BAA4B;IACrC,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,4BAAiC,GACxC,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,118 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ const PORTAL_CONTAINER_TEMPLATE = `import * as React from "react";
4
+
5
+ export const PortalContainerContext =
6
+ \tReact.createContext<HTMLElement | null>(null);
7
+
8
+ export function usePortalContainer() {
9
+ \treturn React.useContext(PortalContainerContext);
10
+ }
11
+ `;
12
+ export async function ensurePortalContainerRuntime(projectDir) {
13
+ const portalContainerPath = path.join(projectDir, "src", "runtime", "PortalContainer.ts");
14
+ if (await fs.pathExists(portalContainerPath)) {
15
+ return;
16
+ }
17
+ await fs.ensureDir(path.dirname(portalContainerPath));
18
+ await fs.writeFile(portalContainerPath, PORTAL_CONTAINER_TEMPLATE, "utf8");
19
+ }
20
+ export async function localizeShadcnPortals(projectDir, options = {}) {
21
+ const componentsDir = path.join(projectDir, "src", "components", "ui");
22
+ if (!(await fs.pathExists(componentsDir))) {
23
+ return;
24
+ }
25
+ await ensurePortalContainerRuntime(projectDir);
26
+ const entries = await fs.readdir(componentsDir, { withFileTypes: true });
27
+ for (const entry of entries) {
28
+ if (!entry.isFile() || !entry.name.endsWith(".tsx")) {
29
+ continue;
30
+ }
31
+ const filePath = path.join(componentsDir, entry.name);
32
+ const source = await fs.readFile(filePath, "utf8");
33
+ const withPortalContainers = withPortalRuntime(source, filePath);
34
+ const updated = options.includeGeneratedCompatibility === false
35
+ ? withPortalContainers
36
+ : withGeneratedShadcnCompatibility(withPortalContainers);
37
+ if (updated !== source) {
38
+ await fs.writeFile(filePath, updated, "utf8");
39
+ }
40
+ }
41
+ }
42
+ function withPortalRuntime(source, filePath) {
43
+ const migratedSource = source.replace(/from ["']@\/runtime\/EcAppShell["']/g, 'from "@/runtime/PortalContainer"');
44
+ const withGenericPortalRuntime = migratedSource
45
+ .replace(/from ["']@\/runtime\/EcPortalContainer["']/g, 'from "@/runtime/PortalContainer"')
46
+ .replace(/\buseEcPortalContainer\b/g, "usePortalContainer");
47
+ const withPortalContainers = withGenericPortalRuntime.replace(/<([A-Za-z][A-Za-z0-9]*Primitive)\.Portal\b(?![^>]*\bcontainer=)/g, "<$1.Portal container={portalContainer ?? undefined}");
48
+ if (withPortalContainers === withGenericPortalRuntime) {
49
+ return withGenericPortalRuntime;
50
+ }
51
+ return addPortalImport(addPortalHookDeclarations(withPortalContainers, filePath));
52
+ }
53
+ function withGeneratedShadcnCompatibility(source) {
54
+ const withChartAttributeSelectors = removeStandaloneClassPrefixes(source)
55
+ .replace(/\[stroke=#ccc\]/g, "[stroke='#ccc']")
56
+ .replace(/\[stroke=#fff\]/g, "[stroke='#fff']");
57
+ if (!withChartAttributeSelectors.includes('from "react-day-picker"')) {
58
+ return withChartAttributeSelectors;
59
+ }
60
+ return withChartAttributeSelectors.replace(/(\n\s*)table:/g, "$1month_grid:");
61
+ }
62
+ function removeStandaloneClassPrefixes(source) {
63
+ let updated = source;
64
+ let previous;
65
+ do {
66
+ previous = updated;
67
+ updated = updated.replace(/(^|[\s"'])ec:(?=\s|["'])/g, "$1");
68
+ } while (updated !== previous);
69
+ return updated;
70
+ }
71
+ function addPortalImport(source) {
72
+ if (source.includes('from "@/runtime/PortalContainer"')) {
73
+ return source;
74
+ }
75
+ const importPattern = /import[\s\S]*?from\s+["'][^"']+["'];?\n|import\s+["'][^"']+["'];?\n/g;
76
+ let insertAt = 0;
77
+ for (const match of source.matchAll(importPattern)) {
78
+ insertAt = (match.index ?? 0) + match[0].length;
79
+ }
80
+ const importLine = 'import { usePortalContainer } from "@/runtime/PortalContainer"\n';
81
+ return `${source.slice(0, insertAt)}${importLine}${source.slice(insertAt)}`;
82
+ }
83
+ function addPortalHookDeclarations(source, filePath) {
84
+ const lines = source.split("\n");
85
+ const hookBodyLines = new Set();
86
+ for (let index = 0; index < lines.length; index += 1) {
87
+ if (!lines[index]?.includes("container={portalContainer ?? undefined}")) {
88
+ continue;
89
+ }
90
+ const bodyLine = findContainingFunctionBodyLine(lines, index);
91
+ if (bodyLine === undefined) {
92
+ throw new Error(`Could not locate a function body for a shadcn Portal in ${filePath}.`);
93
+ }
94
+ hookBodyLines.add(bodyLine);
95
+ }
96
+ for (const bodyLine of [...hookBodyLines].sort((a, b) => b - a)) {
97
+ if (lines[bodyLine + 1]?.includes("const portalContainer")) {
98
+ continue;
99
+ }
100
+ const indent = lines[bodyLine]?.match(/^(\s*)/)?.[1] ?? "";
101
+ lines.splice(bodyLine + 1, 0, `${indent} const portalContainer = usePortalContainer()`);
102
+ }
103
+ return lines.join("\n");
104
+ }
105
+ function findContainingFunctionBodyLine(lines, portalLine) {
106
+ for (let index = portalLine; index >= 0; index -= 1) {
107
+ if (!/^\s*function\s+\w+/.test(lines[index] ?? "")) {
108
+ continue;
109
+ }
110
+ for (let bodyLine = index; bodyLine <= portalLine; bodyLine += 1) {
111
+ if (/\)\s*\{\s*$/.test(lines[bodyLine] ?? "")) {
112
+ return bodyLine;
113
+ }
114
+ }
115
+ }
116
+ return undefined;
117
+ }
118
+ //# sourceMappingURL=portalContainers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portalContainers.js","sourceRoot":"","sources":["../src/portalContainers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-ec-app",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Unified CLI tool to create different types of EC applications: Webresource, Portal, Power Pages, Power Apps Code Apps",
5
5
  "bin": {
6
6
  "create-ec-app": "./dist/index.js"
@@ -23,30 +23,51 @@ const root = postcss.parse(css, { from: cssPath });
23
23
  const failures = [];
24
24
 
25
25
  root.walkRules((rule) => {
26
- if (!rule.nodes?.some((node) => node.type === "decl" && node.prop.startsWith("--"))) {
26
+ if (isKeyframesRule(rule)) {
27
27
  return;
28
28
  }
29
29
 
30
30
  for (const selector of splitSelectorList(rule.selector)) {
31
- if (!selector.includes(".ec-pcf-shell-control")) {
32
- failures.push(`unscoped custom-property rule: ${selector}`);
31
+ if (!selector.includes(".pcf-shell-control")) {
32
+ failures.push(`unscoped PCF rule: ${selector}`);
33
33
  }
34
34
  }
35
35
  });
36
36
 
37
- if (!css.includes("[data-ec-pcf-control=")) {
37
+ if (!css.includes("[data-pcf-control=")) {
38
38
  failures.push("missing PCF control data attribute scope");
39
39
  }
40
40
 
41
+ if (css.includes(".ec-pcf-shell-control") || css.includes("[data-ec-pcf-control=")) {
42
+ failures.push("legacy EC PCF scope is still present");
43
+ }
44
+
41
45
  if (failures.length > 0) {
42
- console.error("PCF CSS variable scope check failed:");
46
+ console.error("PCF CSS scope check failed:");
43
47
  for (const failure of failures) {
44
48
  console.error(`- ${failure}`);
45
49
  }
46
50
  process.exit(1);
47
51
  }
48
52
 
49
- console.log("PCF CSS variable scope check passed.");
53
+ console.log("PCF CSS scope check passed.");
54
+
55
+ function isKeyframesRule(rule) {
56
+ let parent = rule.parent;
57
+
58
+ while (parent) {
59
+ if (
60
+ parent.type === "atrule" &&
61
+ parent.name.toLowerCase().endsWith("keyframes")
62
+ ) {
63
+ return true;
64
+ }
65
+
66
+ parent = parent.parent;
67
+ }
68
+
69
+ return false;
70
+ }
50
71
 
51
72
  function splitSelectorList(selectorList) {
52
73
  const selectors = [];
@@ -4,7 +4,6 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
4
 
5
5
  import "./index.css";
6
6
  import App from "./App.tsx";
7
- import { EcAppShell } from "./runtime/EcAppShell.tsx";
8
7
 
9
8
  const queryClient = new QueryClient({
10
9
  defaultOptions: {
@@ -24,9 +23,7 @@ const root = createRoot(document.getElementById("root")!);
24
23
  root.render(
25
24
  <StrictMode>
26
25
  <QueryClientProvider client={queryClient}>
27
- <EcAppShell>
28
- <App />
29
- </EcAppShell>
26
+ <App />
30
27
  </QueryClientProvider>
31
28
  </StrictMode>
32
29
  );
@@ -9,6 +9,29 @@ npm install
9
9
  npm run build
10
10
  ```
11
11
 
12
+ ## Regenerate From Webresource Changes
13
+
14
+ Do not edit this generated PCF folder as the durable source of truth. From the webresource root, rebuild and regenerate:
15
+
16
+ ```bash
17
+ npm run build
18
+ npx create-ec-app@latest \
19
+ --pcf-dir . \
20
+ --output ./pcf/{{PCF_CONSTRUCTOR}} \
21
+ --namespace {{PCF_NAMESPACE}} \
22
+ --constructor {{PCF_CONSTRUCTOR}} \
23
+ --display-name "{{CONTROL_DISPLAY_NAME}}"
24
+ cd pcf/{{PCF_CONSTRUCTOR}}
25
+ npm install
26
+ npm run build
27
+ ```
28
+
29
+ Then run the harness:
30
+
31
+ ```bash
32
+ npm run start -- --no-open
33
+ ```
34
+
12
35
  ## Control Info
13
36
 
14
37
  - Namespace: `{{PCF_NAMESPACE}}`
@@ -18,14 +41,15 @@ npm run build
18
41
 
19
42
  ## Notes
20
43
 
21
- - The wrapper imports `src/App` directly and uses generated `pcf-scoped.css` derived from the webresource build.
44
+ - The wrapper imports `src/App` directly, renders it through the local PCF shell, and uses generated `pcf-scoped.css` derived from the webresource build.
45
+ - Source-app CSS imports are ignored by the PCF webpack config because the built CSS is already included through `pcf-scoped.css`.
22
46
  - Regenerate this folder after rebuilding the webresource whenever the app changes.
23
47
  - The project includes both `pcf-scripts` build support and a `.pcfproj` for Dataverse solution packaging flows.
24
48
 
25
49
  ## CSS scoping
26
50
 
27
- This PCF control renders the app inside the PCF host container class `.ec-pcf-shell-control`.
51
+ This PCF control renders the app inside the PCF host container class `.pcf-shell-control`.
28
52
 
29
- During PCF generation, `create-ec-app` reads the webresource's built `dist/main.css`, scopes CSS custom-property rules to this control's `.ec-pcf-shell-control[data-ec-pcf-control="{{PCF_CONSTRUCTOR}}"]` host selector, and writes the result to `pcf-scoped.css`.
53
+ During PCF generation, `create-ec-app` reads the webresource's built `dist/main.css`, scopes CSS selectors to this control's `.pcf-shell-control[data-pcf-control="{{PCF_CONSTRUCTOR}}"]` host selector, and writes the result to `pcf-scoped.css`.
30
54
 
31
- Tailwind utilities remain unprefixed, while shadcn/Tailwind theme variables are local to the generated PCF control. Radix/shadcn portals render into the app-local portal root where supported.
55
+ Tailwind utilities and base selectors are isolated under the generated PCF host selector. Radix/shadcn portals render into the PCF-local portal root where supported.
@@ -4,7 +4,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
4
 
5
5
  import App from "{{PROJECT_APP_IMPORT}}";
6
6
  import "{{PROJECT_CSS_IMPORT}}";
7
- import { EcAppShell } from "{{PROJECT_EC_APP_SHELL_IMPORT}}";
7
+ import { PcfAppShell } from "./runtime/PcfAppShell";
8
8
  import type { IInputs, IOutputs } from "./control/generated/ManifestTypes";
9
9
  import type {
10
10
  PcfRuntimeContext,
@@ -16,13 +16,37 @@ function sanitizeGuid(value: string | null | undefined): string | null {
16
16
  return value.replace(/[{}]/g, "");
17
17
  }
18
18
 
19
+ function getPageClientUrl(
20
+ pageContext:
21
+ | {
22
+ clientUrl?: unknown;
23
+ getClientUrl?: unknown;
24
+ }
25
+ | undefined,
26
+ ): string | null {
27
+ const getClientUrl = pageContext?.getClientUrl;
28
+ if (typeof getClientUrl === "function") {
29
+ try {
30
+ const clientUrl = getClientUrl.call(pageContext);
31
+ return typeof clientUrl === "string" ? clientUrl : null;
32
+ } catch {
33
+ return null;
34
+ }
35
+ }
36
+
37
+ return typeof pageContext?.clientUrl === "string"
38
+ ? pageContext.clientUrl
39
+ : null;
40
+ }
41
+
19
42
  function getContextInfo(context: ComponentFramework.Context<IInputs>) {
20
43
  const pageContext = (
21
44
  context as ComponentFramework.Context<IInputs> & {
22
45
  page?: {
46
+ clientUrl?: unknown;
23
47
  entityId?: string;
24
48
  entityTypeName?: string;
25
- getClientUrl?: () => string;
49
+ getClientUrl?: unknown;
26
50
  };
27
51
  }
28
52
  ).page;
@@ -39,7 +63,7 @@ function getContextInfo(context: ComponentFramework.Context<IInputs>) {
39
63
  ),
40
64
  entityName:
41
65
  modeContextInfo?.entityTypeName ?? pageContext?.entityTypeName ?? null,
42
- clientUrl: pageContext?.getClientUrl?.() ?? null,
66
+ clientUrl: getPageClientUrl(pageContext),
43
67
  userId: sanitizeGuid(context.userSettings.userId),
44
68
  };
45
69
  }
@@ -112,8 +136,8 @@ export class {{PCF_CONSTRUCTOR}}
112
136
  _state: ComponentFramework.Dictionary,
113
137
  container: HTMLDivElement,
114
138
  ): void {
115
- container.classList.add("ec-pcf-shell-control");
116
- container.dataset.ecPcfControl = "{{PCF_CONSTRUCTOR}}";
139
+ container.classList.add("pcf-shell-control");
140
+ container.dataset.pcfControl = "{{PCF_CONSTRUCTOR}}";
117
141
  this.runtime = createRuntime(context);
118
142
  this.root = createRoot(container);
119
143
  this.render();
@@ -144,7 +168,7 @@ export class {{PCF_CONSTRUCTOR}}
144
168
  StrictMode,
145
169
  null,
146
170
  React.createElement(
147
- EcAppShell,
171
+ PcfAppShell,
148
172
  null,
149
173
  React.createElement(
150
174
  QueryClientProvider,
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+
3
+ import { PortalContainerContext } from "{{PROJECT_PORTAL_CONTAINER_IMPORT}}";
4
+
5
+ export function PcfAppShell({ children }: { children: React.ReactNode }) {
6
+ const [portalContainer, setPortalContainer] =
7
+ React.useState<HTMLDivElement | null>(null);
8
+
9
+ return (
10
+ <div data-pcf-app-root="">
11
+ <PortalContainerContext.Provider value={portalContainer}>
12
+ {children}
13
+ <div data-pcf-portal-root="" ref={setPortalContainer} />
14
+ </PortalContainerContext.Provider>
15
+ </div>
16
+ );
17
+ }
@@ -0,0 +1 @@
1
+ module.exports = {};
@@ -1,4 +1,7 @@
1
1
  const path = require("path");
2
+ const webpack = require("webpack");
3
+
4
+ const projectSrcPath = path.resolve(__dirname, "{{PROJECT_SRC_ALIAS}}");
2
5
 
3
6
  module.exports = {
4
7
  resolve: {
@@ -8,4 +11,14 @@ module.exports = {
8
11
  "react-dom": path.resolve(__dirname, "{{PROJECT_REACT_DOM_ALIAS}}"),
9
12
  },
10
13
  },
14
+ plugins: [
15
+ new webpack.NormalModuleReplacementPlugin(
16
+ /\.(css|scss|sass)$/,
17
+ (resource) => {
18
+ if (path.resolve(resource.context).startsWith(projectSrcPath)) {
19
+ resource.request = path.resolve(__dirname, "runtime/emptyStyles.js");
20
+ }
21
+ },
22
+ ),
23
+ ],
11
24
  };
@@ -270,10 +270,15 @@ Basic flow:
270
270
  npm run build
271
271
  ```
272
272
 
273
- 2. Run the generator and point `--pcf-dir` at the generated PCF project directory:
273
+ 2. Run the generator from the webresource root. Point `--pcf-dir` at the webresource root and `--output` at the PCF project folder you want to generate:
274
274
 
275
275
  ```bash
276
- npx create-ec-app@latest --pcf-dir ./pcf/{{ControlName}} namespace {{EC}} --constructor {{ControlName}} --display-name "Control Name"
276
+ npx create-ec-app@latest \
277
+ --pcf-dir . \
278
+ --output ./pcf/{{ControlName}} \
279
+ --namespace EC \
280
+ --constructor {{ControlName}} \
281
+ --display-name "Control Name"
277
282
  ```
278
283
 
279
284
  3. Install dependencies inside that generated PCF directory:
@@ -281,33 +286,41 @@ npx create-ec-app@latest --pcf-dir ./pcf/{{ControlName}} namespace {{EC}} --cons
281
286
  ```bash
282
287
  cd ./pcf/{{ControlName}}
283
288
  npm install
289
+ npm run build
284
290
  ```
285
291
 
286
292
  This writes a standalone PCF project to the `--pcf-dir` folder. The generated control:
287
293
 
288
294
  - imports `src/App.tsx` directly instead of wrapping built HTML in an iframe
289
295
  - creates and imports `pcf-scoped.css` from the built `dist/main.css`
296
+ - scopes every non-keyframe CSS selector under the generated PCF host selector
290
297
  - creates `src/runtime/types.ts` only if that file does not already exist
291
298
  - provides a runtime object with record context and `context.webAPI` access inside the generated PCF shell, following the `PcfBase` pattern
292
299
  - mounts your React app directly into the PCF container
293
300
 
294
- Typical conversion flow from inside a generated webresource project:
301
+ Regenerate after app code or CSS changes by running the same sequence again from the webresource root:
295
302
 
296
303
  ```bash
297
- npm install
298
304
  npm run build
299
- npx create-ec-app@latest --pcf-dir ./pcf/FusionNotebookHost namespace EC --constructor FusionNotebookHost --display-name "Fusion Notebook Host"
305
+ npx create-ec-app@latest \
306
+ --pcf-dir . \
307
+ --output ./pcf/FusionNotebookHost \
308
+ --namespace EC \
309
+ --constructor FusionNotebookHost \
310
+ --display-name "Fusion Notebook Host"
300
311
  cd pcf/FusionNotebookHost
301
312
  npm install
302
313
  npm run build
303
314
  ```
304
315
 
316
+ Regeneration removes and recreates the PCF output folder, so keep durable app code in `src` and use generator templates or layers for repeatable PCF-specific changes.
317
+
305
318
  What gets generated:
306
319
 
307
320
  - a minimal PCF wrapper project under `pcf/<ConstructorName>`
308
321
  - a checked-in PCF shell stamped out from `create-ec-app/templates/pcf/base`
309
322
  - direct imports back to your webresource source
310
- - a generated `pcf-scoped.css` file with CSS custom properties scoped to the PCF control
323
+ - a generated `pcf-scoped.css` file with CSS selectors scoped to the PCF control
311
324
 
312
325
  ## Notes
313
326
 
@@ -4,7 +4,6 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
4
  import "@progress/kendo-theme-fluent/dist/all.css";
5
5
  import "./index.css";
6
6
  import App from "./App.tsx";
7
- import { EcAppShell } from "./runtime/EcAppShell.tsx";
8
7
 
9
8
  const queryClient = new QueryClient({
10
9
  defaultOptions: {
@@ -24,9 +23,7 @@ const root = createRoot(document.getElementById("root")!);
24
23
  root.render(
25
24
  <StrictMode>
26
25
  <QueryClientProvider client={queryClient}>
27
- <EcAppShell>
28
- <App />
29
- </EcAppShell>
26
+ <App />
30
27
  </QueryClientProvider>
31
28
  </StrictMode>
32
29
  );
@@ -1,21 +0,0 @@
1
- import * as React from "react";
2
-
3
- const EcPortalContainerContext = React.createContext<HTMLElement | null>(null);
4
-
5
- export function useEcPortalContainer() {
6
- return React.useContext(EcPortalContainerContext);
7
- }
8
-
9
- export function EcAppShell({ children }: { children: React.ReactNode }) {
10
- const [portalContainer, setPortalContainer] =
11
- React.useState<HTMLDivElement | null>(null);
12
-
13
- return (
14
- <div data-ec-app-root="">
15
- <EcPortalContainerContext.Provider value={portalContainer}>
16
- {children}
17
- <div data-ec-portal-root="" ref={setPortalContainer} />
18
- </EcPortalContainerContext.Provider>
19
- </div>
20
- );
21
- }