@squaredr/fieldcraft-pro 1.6.2 → 1.6.3

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.
@@ -1048,6 +1048,24 @@ function ThemeEditorInner({
1048
1048
  const [showComparison, setShowComparison] = useState(false);
1049
1049
  const themeRef = useRef(theme);
1050
1050
  themeRef.current = theme;
1051
+ const hasInitialTheme = useRef(initialTheme != null);
1052
+ useEffect(() => {
1053
+ if (hasInitialTheme.current) return;
1054
+ if (typeof window === "undefined") return;
1055
+ const observer = new MutationObserver(() => {
1056
+ requestAnimationFrame(() => {
1057
+ const resolved = resolveThemeFromDOM();
1058
+ setTheme(resolved);
1059
+ setPresetKey("custom");
1060
+ onChange?.(resolved);
1061
+ });
1062
+ });
1063
+ observer.observe(document.documentElement, {
1064
+ attributes: true,
1065
+ attributeFilter: ["data-theme", "class"]
1066
+ });
1067
+ return () => observer.disconnect();
1068
+ }, [onChange]);
1051
1069
  useEffect(() => {
1052
1070
  function handleKeyDown(e) {
1053
1071
  if ((e.metaKey || e.ctrlKey) && e.key === "s") {
package/dist/index.js CHANGED
@@ -8544,6 +8544,24 @@ function ThemeEditorInner({
8544
8544
  const [showComparison, setShowComparison] = react.useState(false);
8545
8545
  const themeRef = react.useRef(theme);
8546
8546
  themeRef.current = theme;
8547
+ const hasInitialTheme = react.useRef(initialTheme != null);
8548
+ react.useEffect(() => {
8549
+ if (hasInitialTheme.current) return;
8550
+ if (typeof window === "undefined") return;
8551
+ const observer = new MutationObserver(() => {
8552
+ requestAnimationFrame(() => {
8553
+ const resolved = resolveThemeFromDOM();
8554
+ setTheme(resolved);
8555
+ setPresetKey("custom");
8556
+ onChange?.(resolved);
8557
+ });
8558
+ });
8559
+ observer.observe(document.documentElement, {
8560
+ attributes: true,
8561
+ attributeFilter: ["data-theme", "class"]
8562
+ });
8563
+ return () => observer.disconnect();
8564
+ }, [onChange]);
8547
8565
  react.useEffect(() => {
8548
8566
  function handleKeyDown(e) {
8549
8567
  if ((e.metaKey || e.ctrlKey) && e.key === "s") {
@@ -8848,7 +8866,7 @@ var themeEditorDarkPreset = {
8848
8866
  // src/index.ts
8849
8867
  if (typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" && globalThis.process.env?.NODE_ENV !== "production") {
8850
8868
  const _fc_banner = `
8851
- %c FieldCraft Pro %c v1.6.2
8869
+ %c FieldCraft Pro %c v1.6.3
8852
8870
 
8853
8871
  %cForm Builder \xB7 Response Viewer \xB7 Theme Editor
8854
8872
 
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  export { DEFAULT_PALETTE, DEFAULT_SCHEMA, FormBuilder, FormBuilderThemeProvider, QUESTION_TYPE_INFO, addOption, addQuestion, addSection, duplicateQuestion, duplicateSection, findQuestion, findSection, generateId, generateOptionId, generateQuestionId, generateSectionId, moveOption, moveQuestion, moveSection, removeOption, removeQuestion, removeSection, updateOption, updateQuestion, updateSection, useBuilderState, useBuilderTheme, useDragDrop, useUndoRedo } from './chunk-ANBMT5AW.mjs';
2
2
  export { ResponseViewer } from './chunk-5LKGCZAW.mjs';
3
3
  export { cn } from './chunk-QQ4JZGTD.mjs';
4
- export { PRESET_FAMILIES, PREVIEW_SCHEMA, ThemeEditor, ThemeEditorInner, ThemeEditorThemeProvider, resolveThemeFromDOM, themeEditorDarkPreset, themeEditorLightPreset, useEditorTheme } from './chunk-Y6JWJY3A.mjs';
4
+ export { PRESET_FAMILIES, PREVIEW_SCHEMA, ThemeEditor, ThemeEditorInner, ThemeEditorThemeProvider, resolveThemeFromDOM, themeEditorDarkPreset, themeEditorLightPreset, useEditorTheme } from './chunk-AXCQWATI.mjs';
5
5
  export { FieldCraftProProvider, UnlicensedOverlay, isProductionEnvironment, requireLicense, useLicense, validateLicense } from './chunk-VECQKSWS.mjs';
6
6
  import { useState, useEffect, Suspense } from 'react';
7
7
  import { FieldWrapper } from '@squaredr/fieldcraft-react';
@@ -277,7 +277,7 @@ var PRO_FIELD_OVERRIDES = {
277
277
  // src/index.ts
278
278
  if (typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" && globalThis.process.env?.NODE_ENV !== "production") {
279
279
  const _fc_banner = `
280
- %c FieldCraft Pro %c v1.6.2
280
+ %c FieldCraft Pro %c v1.6.3
281
281
 
282
282
  %cForm Builder \xB7 Response Viewer \xB7 Theme Editor
283
283
 
@@ -1372,6 +1372,24 @@ function ThemeEditorInner({
1372
1372
  const [showComparison, setShowComparison] = react.useState(false);
1373
1373
  const themeRef = react.useRef(theme);
1374
1374
  themeRef.current = theme;
1375
+ const hasInitialTheme = react.useRef(initialTheme != null);
1376
+ react.useEffect(() => {
1377
+ if (hasInitialTheme.current) return;
1378
+ if (typeof window === "undefined") return;
1379
+ const observer = new MutationObserver(() => {
1380
+ requestAnimationFrame(() => {
1381
+ const resolved = resolveThemeFromDOM();
1382
+ setTheme(resolved);
1383
+ setPresetKey("custom");
1384
+ onChange?.(resolved);
1385
+ });
1386
+ });
1387
+ observer.observe(document.documentElement, {
1388
+ attributes: true,
1389
+ attributeFilter: ["data-theme", "class"]
1390
+ });
1391
+ return () => observer.disconnect();
1392
+ }, [onChange]);
1375
1393
  react.useEffect(() => {
1376
1394
  function handleKeyDown(e) {
1377
1395
  if ((e.metaKey || e.ctrlKey) && e.key === "s") {
@@ -1,2 +1,2 @@
1
- export { PRESET_FAMILIES, PREVIEW_SCHEMA, ThemeEditor, ThemeEditorInner, ThemeEditorThemeProvider, resolveThemeFromDOM, themeEditorDarkPreset, themeEditorLightPreset, useEditorTheme } from '../chunk-Y6JWJY3A.mjs';
1
+ export { PRESET_FAMILIES, PREVIEW_SCHEMA, ThemeEditor, ThemeEditorInner, ThemeEditorThemeProvider, resolveThemeFromDOM, themeEditorDarkPreset, themeEditorLightPreset, useEditorTheme } from '../chunk-AXCQWATI.mjs';
2
2
  import '../chunk-VECQKSWS.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squaredr/fieldcraft-pro",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Pro components for FieldCraft — visual drag-and-drop Form Builder, Response Viewer, and Theme Editor for React",
5
5
  "keywords": [
6
6
  "fieldcraft",