eddev 2.1.5 → 2.2.0-beta.1

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.
Files changed (150) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/.yarnrc.yml +1 -0
  3. package/css/devtools.css +141 -1
  4. package/dist/app/entry/spa-root.d.ts.map +1 -1
  5. package/dist/app/entry/spa-root.js +3 -3
  6. package/dist/app/entry/ssr-root-client.d.ts.map +1 -1
  7. package/dist/app/entry/ssr-root-client.js +2 -2
  8. package/dist/app/entry/ssr-root.js +1 -1
  9. package/dist/app/lib/blocks/ContentBlocks.d.ts.map +1 -1
  10. package/dist/app/lib/blocks/ContentBlocks.js +16 -9
  11. package/dist/app/lib/blocks/block-debugger.d.ts +64 -0
  12. package/dist/app/lib/blocks/block-debugger.d.ts.map +1 -0
  13. package/dist/app/lib/blocks/block-debugger.js +157 -0
  14. package/dist/app/lib/blocks/editor/editor-config.d.ts +1 -1
  15. package/dist/app/lib/blocks/editor/editor-config.d.ts.map +1 -1
  16. package/dist/app/lib/blocks/editor/editor-config.js +19 -11
  17. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts +1 -1
  18. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts.map +1 -1
  19. package/dist/app/lib/blocks/editor/installGutenbergHooks.js +12 -0
  20. package/dist/app/lib/blocks/index.d.ts +1 -0
  21. package/dist/app/lib/blocks/index.d.ts.map +1 -1
  22. package/dist/app/lib/blocks/index.js +1 -0
  23. package/dist/app/lib/blocks/inline-editing.d.ts +2 -1
  24. package/dist/app/lib/blocks/inline-editing.d.ts.map +1 -1
  25. package/dist/app/lib/blocks/inline-editing.js +3 -1
  26. package/dist/app/lib/devtools/components/DevMenu.d.ts +2 -0
  27. package/dist/app/lib/devtools/components/DevMenu.d.ts.map +1 -0
  28. package/dist/app/lib/devtools/components/DevMenu.js +19 -0
  29. package/dist/app/lib/devtools/components/DevUI.d.ts +13 -0
  30. package/dist/app/lib/devtools/components/DevUI.d.ts.map +1 -1
  31. package/dist/app/lib/devtools/components/DevUI.js +28 -1
  32. package/dist/app/lib/devtools/components/GridIndicator.d.ts +1 -1
  33. package/dist/app/lib/devtools/components/GridIndicator.d.ts.map +1 -1
  34. package/dist/app/lib/devtools/components/GridIndicator.js +2 -1
  35. package/dist/app/lib/devtools/components/panels/AppDataPanel.d.ts +2 -0
  36. package/dist/app/lib/devtools/components/panels/AppDataPanel.d.ts.map +1 -0
  37. package/dist/app/lib/devtools/components/panels/AppDataPanel.js +12 -0
  38. package/dist/app/lib/devtools/components/panels/QueriesPanel.d.ts +2 -0
  39. package/dist/app/lib/devtools/components/panels/QueriesPanel.d.ts.map +1 -0
  40. package/dist/app/lib/devtools/components/panels/QueriesPanel.js +5 -0
  41. package/dist/app/lib/devtools/components/panels/RoutePanel.d.ts +2 -0
  42. package/dist/app/lib/devtools/components/panels/RoutePanel.d.ts.map +1 -0
  43. package/dist/app/lib/devtools/components/panels/RoutePanel.js +58 -0
  44. package/dist/app/lib/devtools/components/panels/StructurePanel.d.ts +2 -0
  45. package/dist/app/lib/devtools/components/panels/StructurePanel.d.ts.map +1 -0
  46. package/dist/app/lib/devtools/components/panels/StructurePanel.js +138 -0
  47. package/dist/app/lib/devtools/components/panels/index.d.ts +10 -0
  48. package/dist/app/lib/devtools/components/panels/index.d.ts.map +1 -0
  49. package/dist/app/lib/devtools/components/panels/index.js +27 -0
  50. package/dist/app/lib/devtools/components/panels/monaco-graphql.worker.d.ts +2 -0
  51. package/dist/app/lib/devtools/components/panels/monaco-graphql.worker.d.ts.map +1 -0
  52. package/dist/app/lib/devtools/components/panels/monaco-graphql.worker.js +9 -0
  53. package/dist/app/lib/devtools/components/ui/Button.d.ts +9 -0
  54. package/dist/app/lib/devtools/components/ui/Button.d.ts.map +1 -0
  55. package/dist/app/lib/devtools/components/ui/Button.js +4 -0
  56. package/dist/app/lib/devtools/components/ui/Chip.d.ts +11 -0
  57. package/dist/app/lib/devtools/components/ui/Chip.d.ts.map +1 -0
  58. package/dist/app/lib/devtools/components/ui/Chip.js +7 -0
  59. package/dist/app/lib/devtools/components/ui/Expander.d.ts +8 -0
  60. package/dist/app/lib/devtools/components/ui/Expander.d.ts.map +1 -0
  61. package/dist/app/lib/devtools/components/ui/Expander.js +4 -0
  62. package/dist/app/lib/devtools/components/ui/JSONInspector.d.ts +8 -0
  63. package/dist/app/lib/devtools/components/ui/JSONInspector.d.ts.map +1 -0
  64. package/dist/app/lib/devtools/components/ui/JSONInspector.js +17 -0
  65. package/dist/app/lib/devtools/components/ui/Panel.d.ts +10 -0
  66. package/dist/app/lib/devtools/components/ui/Panel.d.ts.map +1 -0
  67. package/dist/app/lib/devtools/components/ui/Panel.js +4 -0
  68. package/dist/app/lib/devtools/components/ui/QueryMonitorDisplay.d.ts +7 -0
  69. package/dist/app/lib/devtools/components/ui/QueryMonitorDisplay.d.ts.map +1 -0
  70. package/dist/app/lib/devtools/components/ui/QueryMonitorDisplay.js +58 -0
  71. package/dist/app/lib/devtools/components/ui/TabBar.d.ts +22 -0
  72. package/dist/app/lib/devtools/components/ui/TabBar.d.ts.map +1 -0
  73. package/dist/app/lib/devtools/components/ui/TabBar.js +11 -0
  74. package/dist/app/lib/devtools/components/ui/Tabs.d.ts +13 -0
  75. package/dist/app/lib/devtools/components/ui/Tabs.d.ts.map +1 -0
  76. package/dist/app/lib/devtools/components/ui/Tabs.js +7 -0
  77. package/dist/app/lib/devtools/hooks/usePersistState.d.ts +3 -0
  78. package/dist/app/lib/devtools/hooks/usePersistState.d.ts.map +1 -1
  79. package/dist/app/lib/devtools/hooks/usePersistState.js +7 -0
  80. package/dist/app/lib/devtools/hooks/useTailwind.d.ts +30 -30
  81. package/dist/app/lib/devtools/hooks/useTailwind.d.ts.map +1 -1
  82. package/dist/app/lib/devtools/icons.d.ts +25 -0
  83. package/dist/app/lib/devtools/icons.d.ts.map +1 -0
  84. package/dist/app/lib/devtools/icons.js +25 -0
  85. package/dist/app/lib/devtools/lib/filesize.d.ts +2 -0
  86. package/dist/app/lib/devtools/lib/filesize.d.ts.map +1 -0
  87. package/dist/app/lib/devtools/lib/filesize.js +7 -0
  88. package/dist/app/lib/devtools/tailwind.config.d.ts +5 -0
  89. package/dist/app/lib/devtools/tailwind.config.d.ts.map +1 -1
  90. package/dist/app/lib/devtools/tailwind.config.js +6 -1
  91. package/dist/app/lib/hooks/useAppData.d.ts +2 -0
  92. package/dist/app/lib/hooks/useAppData.d.ts.map +1 -1
  93. package/dist/app/lib/hooks/useAppData.js +8 -0
  94. package/dist/app/lib/internal/read-admin-manifest.d.ts +2 -0
  95. package/dist/app/lib/internal/read-admin-manifest.d.ts.map +1 -1
  96. package/dist/app/lib/internal/read-admin-manifest.js +1 -0
  97. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -1
  98. package/dist/app/lib/routing/components/BrowserRouter.js +22 -6
  99. package/dist/app/lib/routing/components/RouteRenderer.d.ts.map +1 -1
  100. package/dist/app/lib/routing/components/RouteRenderer.js +16 -4
  101. package/dist/app/lib/routing/loader.d.ts +3 -1
  102. package/dist/app/lib/routing/loader.d.ts.map +1 -1
  103. package/dist/app/lib/routing/loader.js +3 -1
  104. package/dist/app/lib/routing/types.d.ts +19 -2
  105. package/dist/app/lib/routing/types.d.ts.map +1 -1
  106. package/dist/app/lib/routing/utils.d.ts +1 -0
  107. package/dist/app/lib/routing/utils.d.ts.map +1 -1
  108. package/dist/app/lib/routing/utils.js +19 -1
  109. package/dist/app/server/server-context.d.ts +1 -1
  110. package/dist/app/server/server-context.d.ts.map +1 -1
  111. package/dist/app/server/server-context.js +23 -9
  112. package/dist/app/utils/query-monitor.d.ts +8 -2
  113. package/dist/app/utils/query-monitor.d.ts.map +1 -1
  114. package/dist/node/cli/cli.js +9 -0
  115. package/dist/node/cli/display/CLIApp.d.ts.map +1 -1
  116. package/dist/node/cli/display/CLIApp.js +1 -0
  117. package/dist/node/cli/version.d.ts +1 -1
  118. package/dist/node/cli/version.d.ts.map +1 -1
  119. package/dist/node/cli/version.js +1 -1
  120. package/dist/node/compiler/get-vite-config.d.ts +1 -0
  121. package/dist/node/compiler/get-vite-config.d.ts.map +1 -1
  122. package/dist/node/compiler/get-vite-config.js +14 -0
  123. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -1
  124. package/dist/node/compiler/vinxi-codegen.js +15 -2
  125. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -1
  126. package/dist/node/graphql/graphql-codegen.js +7 -0
  127. package/dist/node/project/config.d.ts +58 -279
  128. package/dist/node/project/config.d.ts.map +1 -1
  129. package/dist/node/project/config.js +9 -8
  130. package/dist/node/project/eddev-build-file.d.ts.map +1 -1
  131. package/dist/node/project/eddev-build-file.js +1 -0
  132. package/dist/node/project/env.d.ts +8 -20
  133. package/dist/node/project/env.d.ts.map +1 -1
  134. package/dist/node/project/manifest/block-manifest.d.ts +4 -1
  135. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -1
  136. package/dist/node/project/manifest/block-manifest.js +22 -1
  137. package/dist/node/types/block-type.d.ts +31 -94
  138. package/dist/node/types/block-type.d.ts.map +1 -1
  139. package/dist/node/types/block-type.js +6 -0
  140. package/dist/node/types/view-type.d.ts +2 -18
  141. package/dist/node/types/view-type.d.ts.map +1 -1
  142. package/dist/node/utils/format-zod-error.d.ts +1 -2
  143. package/dist/node/utils/format-zod-error.d.ts.map +1 -1
  144. package/dist/node/utils/format-zod-error.js +2 -31
  145. package/dist/node/utils/fs.d.ts +20 -23
  146. package/dist/node/utils/fs.d.ts.map +1 -1
  147. package/dist/node/utils/stateful-log.d.ts.map +1 -1
  148. package/dist/node/utils/stateful-log.js +3 -5
  149. package/package.json +8 -5
  150. package/types.meta.d.ts +11 -0
Binary file
package/.yarnrc.yml ADDED
@@ -0,0 +1 @@
1
+ nodeLinker: node-modules
package/css/devtools.css CHANGED
@@ -10,6 +10,146 @@
10
10
 
11
11
  @layer components {
12
12
  .btn {
13
- @apply flex items-center justify-center text-ui font-mono h-button rounded-full;
13
+ .eddev-ui & {
14
+ @apply flex items-center justify-center text-ui font-mono h-button rounded-full gap-1.5;
15
+
16
+ &[data-variant="button"] {
17
+ @apply bg-black text-white px-2;
18
+ }
19
+
20
+ &[data-variant="subtle"] {
21
+ @apply bg-neutral-300/20 text-white px-2;
22
+ }
23
+
24
+ &[data-variant="tab"] {
25
+ @apply bg-neutral-950 text-gray-400 px-2 shadow-[0_0_1px] shadow-white/30;
26
+
27
+ &[data-active] {
28
+ @apply bg-neutral-900 text-white shadow-white/50;
29
+ }
30
+ }
31
+
32
+ &[data-shape="icon"] {
33
+ @apply w-button p-0;
34
+ }
35
+
36
+ svg {
37
+ @apply size-[1.2em];
38
+ fill: currentColor;
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ .eddev-ui {
45
+ letter-spacing: -0.02em;
46
+
47
+ .json-inspector,
48
+ .json-inspector__selection {
49
+ font:
50
+ 14px/1.4 Consolas,
51
+ monospace;
52
+ }
53
+
54
+ .json-inspector__leaf {
55
+ padding-left: 10px;
56
+ }
57
+
58
+ .json-inspector__line {
59
+ display: block;
60
+ position: relative;
61
+
62
+ cursor: default;
63
+ }
64
+
65
+ .json-inspector__line:after {
66
+ content: "";
67
+
68
+ position: absolute;
69
+ top: 0;
70
+ left: -200px;
71
+ right: -50px;
72
+ bottom: 0;
73
+ z-index: -1;
74
+
75
+ pointer-events: none;
76
+ }
77
+
78
+ .json-inspector__line:hover:after {
79
+ background: rgba(0, 0, 0, 0.06);
80
+ }
81
+
82
+ .json-inspector__leaf_composite > .json-inspector__line {
83
+ cursor: pointer;
84
+ }
85
+
86
+ .json-inspector__radio,
87
+ .json-inspector__flatpath {
88
+ display: none;
89
+ }
90
+
91
+ .json-inspector__value {
92
+ margin-left: 5px;
93
+ }
94
+
95
+ .json-inspector__search {
96
+ min-width: 300px;
97
+ margin: 0 10px 10px 0;
98
+ padding: 2px;
99
+ }
100
+
101
+ .json-inspector__key {
102
+ color: #505050;
103
+ }
104
+
105
+ .json-inspector__value_helper,
106
+ .json-inspector__value_null,
107
+ .json-inspector__not-found {
108
+ color: #b0b0b0;
109
+ }
110
+
111
+ .json-inspector__value_string {
112
+ color: #798953;
113
+ }
114
+
115
+ .json-inspector__value_boolean {
116
+ color: #75b5aa;
117
+ }
118
+
119
+ .json-inspector__value_number {
120
+ color: #d28445;
121
+ }
122
+
123
+ .json-inspector__hl {
124
+ background: #ff0;
125
+ box-shadow: 0 -1px 0 2px #ff0;
126
+ border-radius: 2px;
127
+ }
128
+
129
+ .json-inspector__show-original {
130
+ display: inline-block;
131
+ padding: 0 6px;
132
+
133
+ color: #666;
134
+ cursor: pointer;
135
+ }
136
+
137
+ .json-inspector__show-original:hover {
138
+ color: #111;
139
+ }
140
+
141
+ .json-inspector__show-original:before {
142
+ content: "⥂";
143
+ }
144
+
145
+ .json-inspector__show-original:hover:after {
146
+ content: " expand";
147
+ }
148
+
149
+ ol[role="tree"] {
150
+ li {
151
+ @apply !text-ui !font-mono;
152
+ background-color: transparent !important;
153
+ }
14
154
  }
15
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spa-root.d.ts","sourceRoot":"","sources":["../../../src/app/entry/spa-root.tsx"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,4CAOtB"}
1
+ {"version":3,"file":"spa-root.d.ts","sourceRoot":"","sources":["../../../src/app/entry/spa-root.tsx"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,4CAQtB"}
@@ -1,7 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { DevUILoader } from "../lib/devtools/loader.js";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FiberProvider } from "its-fine";
3
3
  import { BrowserRouter } from "../lib/routing/components/BrowserRouter.js";
4
4
  import { APIProvider } from "../utils/APIProvider.js";
5
5
  export function SPARoot() {
6
- return (_jsxs(APIProvider, { children: [_jsx(BrowserRouter, {}), _jsx(DevUILoader, {})] }));
6
+ return (_jsx(FiberProvider, { children: _jsx(APIProvider, { children: _jsx(BrowserRouter, {}) }) }));
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ssr-root-client.d.ts","sourceRoot":"","sources":["../../../src/app/entry/ssr-root-client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiC,MAAM,OAAO,CAAA;AAIhE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAItD,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,2CAgBnF"}
1
+ {"version":3,"file":"ssr-root-client.d.ts","sourceRoot":"","sources":["../../../src/app/entry/ssr-root-client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiC,MAAM,OAAO,CAAA;AAIhE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAKtD,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,2CAYnF"}
@@ -4,9 +4,9 @@ import { useSnapshot } from "valtio";
4
4
  import { BrowserRouter } from "../lib/routing/components/BrowserRouter.js";
5
5
  import { clientMetaTags } from "../lib/routing/context.js";
6
6
  import { APIProvider } from "../utils/APIProvider.js";
7
- import { DevUILoader } from "../lib/devtools/loader.js";
7
+ import { FiberProvider } from "its-fine";
8
8
  export function SSRClientRoot(props) {
9
- return (_jsxs(APIProvider, { children: [_jsx(BrowserRouter, {}), _jsx(_Fragment, { children: _jsx(DynamicMetaTags, {}) }), _jsx(Suspense, { fallback: null, children: _jsx(_Fragment, { children: _jsx(DevUILoader, {}) }) })] }));
9
+ return (_jsx(FiberProvider, { children: _jsxs(APIProvider, { children: [_jsx(BrowserRouter, {}), _jsx(_Fragment, { children: _jsx(DynamicMetaTags, {}) }), _jsx(Suspense, { fallback: null })] }) }));
10
10
  }
11
11
  function DynamicMetaTags() {
12
12
  const dynamicTags = useSnapshot(clientMetaTags).tags;
@@ -5,7 +5,7 @@ import { getRouteMeta, normalizeRoute } from "../lib/routing/utils.js";
5
5
  import { APIProvider } from "../utils/APIProvider.js";
6
6
  export function SSRRoot(props) {
7
7
  const loader = props.loader;
8
- loader.setAppData(props.initialData.appData.data);
8
+ loader.setAppData(props.initialData.appData.data, props.initialData.appData.queryMonitor);
9
9
  loader.populateRouteData(props.pathname, props.initialData);
10
10
  return (_jsxs(APIProvider, { children: [_jsx(SSRRouter, { loader: loader, hostname: props.hostname, isAI: props.isAI, route: normalizeRoute({
11
11
  id: "initial",
@@ -1 +1 @@
1
- {"version":3,"file":"ContentBlocks.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/blocks/ContentBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAA4C,MAAM,OAAO,CAAA;AAO3G,KAAK,iBAAiB,CAAC,KAAK,EAAE,MAAM,IAAI;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,KAAK,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,GAAG,CAAA;IACV,WAAW,CAAC,EAAE,YAAY,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,GAAG,CAAA;CACZ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7D,CAAC,MAAM,UAAU,CAAC,CAAA;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,aAAa,oDAAsD,CAAA;AAEhF,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,KAAK,YAAY,CAAA;IACxE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,YAAY,EAAE,CAAA;QACzB,MAAM,CAAC,EAAE,YAAY,CAAA;QACrB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;QACzB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;QACzB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,YAAY,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,KAAK,KAAK,GAAG;IACX,kDAAkD;IAClD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB,GAAG,uBAAuB,CAAA;AAS3B;;GAEG;AACH,eAAO,MAAM,aAAa,8CAAgB,KAAK,oDA8E7C,CAAA;AAIF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,kDA+CpD"}
1
+ {"version":3,"file":"ContentBlocks.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/blocks/ContentBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAA4C,MAAM,OAAO,CAAA;AAQ3G,KAAK,iBAAiB,CAAC,KAAK,EAAE,MAAM,IAAI;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,KAAK,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,GAAG,CAAA;IACV,WAAW,CAAC,EAAE,YAAY,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,GAAG,CAAA;CACZ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7D,CAAC,MAAM,UAAU,CAAC,CAAA;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,aAAa,oDAAsD,CAAA;AAEhF,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,KAAK,YAAY,CAAA;IACxE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,YAAY,EAAE,CAAA;QACzB,MAAM,CAAC,EAAE,YAAY,CAAA;QACrB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;QACzB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;QACzB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,YAAY,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,KAAK,KAAK,GAAG;IACX,kDAAkD;IAClD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB,GAAG,uBAAuB,CAAA;AAS3B;;GAEG;AACH,eAAO,MAAM,aAAa,8CAAgB,KAAK,oDAyF7C,CAAA;AAIF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,kDAiDpD"}
@@ -1,10 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Fragment, createContext, memo, useContext, useMemo } from "react";
3
- import { blockManifestReader } from "../internal/read-block-manifest.js";
4
3
  import { BlockErrorBoundary } from "../../utils/BlockErrorBoundary.js";
5
- import { InlineEditingContextProvider, ReadonlyInlineEditingProvider } from "./inline-editing.js";
6
- import { addBlockMetadata } from "./block-utils.js";
4
+ import { blockManifestReader } from "../internal/read-block-manifest.js";
7
5
  import { useRouter } from "../routing/index.js";
6
+ import { BlockDebug, PageStructureNode, usePageStructureNode } from "./block-debugger.js";
7
+ import { addBlockMetadata } from "./block-utils.js";
8
+ import { InlineEditingContextProvider, ReadonlyInlineEditingProvider } from "./inline-editing.js";
8
9
  export const BlocksContext = createContext(undefined);
9
10
  /**
10
11
  * Render a set of Gutenberg blocks
@@ -68,10 +69,16 @@ export const ContentBlocks = memo((props) => {
68
69
  return (_jsxs(Fragment, { children: [spaceBefore, _jsx(BlockErrorBoundary, { block: block, blockContext: ctx, children: blockNode }), spaceAfter] }, block.slug + "_" + index));
69
70
  });
70
71
  }, [blocks, props.wrapBlock, props.spacer]);
72
+ const debugNode = usePageStructureNode({
73
+ type: "blocks",
74
+ children: [],
75
+ isInnerBlocks: false,
76
+ id: "",
77
+ });
71
78
  if (env.admin) {
72
79
  return _jsx(ReadonlyInlineEditingProvider, { children: layout });
73
80
  }
74
- return _jsx(Fragment, { children: layout });
81
+ return (_jsx(Fragment, { children: _jsx(PageStructureNode, { node: debugNode, children: layout }) }));
75
82
  });
76
83
  ContentBlocks.displayName = "ContentBlocks";
77
84
  export function SingleContentBlock(props) {
@@ -89,16 +96,16 @@ export function SingleContentBlock(props) {
89
96
  // Apply the block style class name
90
97
  // @ts-ignore
91
98
  block.props.blockStyle = block.class?.replace("is-style-", "");
92
- let result = (_jsx(InlineEditingContextProvider, { block: [block.blockName, block.props], values: block.inline, innerBlocks: block.innerBlocks ?? [], index: props.index ?? 0, children: _jsx(Component, { ...block.props, innerHTML: block.innerHTML,
93
- // innerBlocks={block.innerBlocks}
94
- children: Array.isArray(block.innerBlocks) && block.innerBlocks.length ? (_jsx(ContentBlocks, { blocks: block.innerBlocks })) : null }) }));
99
+ let result = (_jsx(InlineEditingContextProvider, { block: [block.blockName, block.props], values: block.inline, innerBlocks: block.innerBlocks ?? [], index: props.index ?? 0, children: _jsx(BlockDebug, { block: block, children: _jsx(Component, { ...block.props, innerHTML: block.innerHTML,
100
+ // innerBlocks={block.innerBlocks}
101
+ children: Array.isArray(block.innerBlocks) && block.innerBlocks.length ? (_jsx(ContentBlocks, { blocks: block.innerBlocks })) : null }) }) }));
95
102
  if (!env.client && env.serverless) {
96
103
  const router = useRouter();
97
104
  if (router.isAI) {
98
105
  result = _jsx("div", { "data-block-type": props.block.slug, children: result });
99
106
  }
100
107
  }
101
- return result;
108
+ return _jsx(_Fragment, { children: result });
102
109
  }
103
110
  function useBlockComponent(block) {
104
111
  return blockManifestReader.value[block.blockName];
@@ -0,0 +1,64 @@
1
+ import { PropsWithChildren, ReactNode } from "react";
2
+ import { RouteState } from "../routing";
3
+ import { type ContentBlock } from "./ContentBlocks";
4
+ import { InlineEditingContext } from "./inline-editing";
5
+ export type PageStructureNode = {
6
+ type: "block";
7
+ id: string;
8
+ block: ContentBlock;
9
+ context: InlineEditingContext | undefined;
10
+ children: PageStructureNode[];
11
+ getElements?: () => HTMLElement[];
12
+ parent?: PageStructureNode;
13
+ } | {
14
+ type: "route";
15
+ id: string;
16
+ route: RouteState;
17
+ children: PageStructureNode[];
18
+ parent?: PageStructureNode;
19
+ } | {
20
+ type: "blocks";
21
+ id: string;
22
+ isInnerBlocks: boolean;
23
+ children: PageStructureNode[];
24
+ parent?: PageStructureNode;
25
+ } | {
26
+ type: "debug";
27
+ id: string;
28
+ label: string;
29
+ data: Record<string, any>;
30
+ logEntries: {
31
+ time: Date;
32
+ args: any[];
33
+ }[];
34
+ children: PageStructureNode[];
35
+ parent?: PageStructureNode;
36
+ getElements?: () => HTMLElement[];
37
+ } | {
38
+ type: "root";
39
+ id: string;
40
+ children: PageStructureNode[];
41
+ };
42
+ export declare const pageStructureRoot: PageStructureNode;
43
+ export declare const BlockDebugContext: import("react").Context<PageStructureNode>;
44
+ export declare function usePageStructureNode<T extends PageStructureNode["type"]>(initial: Extract<PageStructureNode, {
45
+ type: T;
46
+ }>): Extract<PageStructureNode, {
47
+ type: T;
48
+ }>;
49
+ export declare function useDebugNode<T extends Record<string, any> | undefined>(label: string, initial?: T): (T extends Record<string, any> ? T : {}) & {
50
+ log(...args: any[]): void;
51
+ };
52
+ export declare function DebugNode<T extends Record<string, any>>(props: PropsWithChildren<{
53
+ label: string;
54
+ data?: T;
55
+ }>): import("react/jsx-runtime").JSX.Element;
56
+ export declare function PageStructureNode({ node, children }: {
57
+ node: PageStructureNode;
58
+ children?: ReactNode;
59
+ }): import("react/jsx-runtime").JSX.Element;
60
+ export declare function BlockDebug(props: {
61
+ block: ContentBlock;
62
+ children: ReactNode;
63
+ }): import("react/jsx-runtime").JSX.Element;
64
+ //# sourceMappingURL=block-debugger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-debugger.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/blocks/block-debugger.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useFiber } from "its-fine";
3
+ import { createContext, Fragment, useContext, useEffect, useId, useMemo } from "react";
4
+ import { proxy, ref } from "valtio";
5
+ import { useBlockContext } from "./inline-editing";
6
+ import { hash } from "object-code";
7
+ export const pageStructureRoot = proxy({
8
+ type: "root",
9
+ id: "root",
10
+ children: [],
11
+ });
12
+ if (env.client && !env.admin) {
13
+ // @ts-ignore
14
+ window.pageStructure = pageStructureRoot;
15
+ }
16
+ export const BlockDebugContext = createContext(pageStructureRoot);
17
+ export function usePageStructureNode(initial) {
18
+ const id = useId();
19
+ if (!env.client || env.admin) {
20
+ return {
21
+ ...initial,
22
+ id: id,
23
+ };
24
+ }
25
+ const parent = useContext(BlockDebugContext);
26
+ const node = useMemo(() => {
27
+ return proxy({ ...initial, id, parent });
28
+ }, []);
29
+ return node;
30
+ }
31
+ export function useDebugNode(label, initial) {
32
+ if (!env.client || env.admin) {
33
+ return {
34
+ log: console.log.bind(console, `[Debug: ${label}]`),
35
+ ...initial,
36
+ };
37
+ }
38
+ const fiber = useFiber();
39
+ const parent = useContext(BlockDebugContext);
40
+ const id = useId();
41
+ const node = useMemo(() => {
42
+ return proxy({
43
+ type: "debug",
44
+ data: initial ?? {},
45
+ logEntries: [],
46
+ label,
47
+ id,
48
+ parent,
49
+ children: [],
50
+ getElements: createGetElements(fiber),
51
+ });
52
+ }, []);
53
+ useEffect(() => {
54
+ node.data = initial ?? {};
55
+ }, [hash(initial ?? {})]);
56
+ node.data.log = (...args) => {
57
+ node.logEntries.push(ref({ time: new Date(), args }));
58
+ };
59
+ useEffect(() => {
60
+ if (parent) {
61
+ parent.children.push(node);
62
+ return () => {
63
+ parent.children = parent.children.filter((c) => c !== node);
64
+ };
65
+ }
66
+ }, [node]);
67
+ return node.data;
68
+ }
69
+ export function DebugNode(props) {
70
+ if (!env.client || env.admin)
71
+ return _jsx(Fragment, { children: props.children });
72
+ const fiber = useFiber();
73
+ const parent = useContext(BlockDebugContext);
74
+ const id = useId();
75
+ const node = useMemo(() => {
76
+ return proxy({
77
+ type: "debug",
78
+ data: props.data ?? {},
79
+ logEntries: [],
80
+ label: props.label,
81
+ id,
82
+ parent,
83
+ children: [],
84
+ getElements: createGetElements(fiber),
85
+ });
86
+ }, []);
87
+ useEffect(() => {
88
+ node.data = props.data ?? {};
89
+ }, [hash(props.data ?? {})]);
90
+ useEffect(() => {
91
+ node.label = props.label;
92
+ }, [props.label]);
93
+ return _jsx(PageStructureNode, { node: node, children: props.children });
94
+ }
95
+ export function PageStructureNode({ node, children }) {
96
+ if (!env.client || env.admin)
97
+ return _jsx(Fragment, { children: children });
98
+ useEffect(() => {
99
+ if (node.type !== "root") {
100
+ const parent = node.parent;
101
+ if (parent) {
102
+ parent.children.push(node);
103
+ return () => {
104
+ parent.children = parent.children.filter((c) => c !== node);
105
+ };
106
+ }
107
+ }
108
+ }, []);
109
+ return _jsx(BlockDebugContext.Provider, { value: node, children: children });
110
+ }
111
+ function createGetElements(fiber) {
112
+ function findChildren(fiber) {
113
+ const children = [];
114
+ if (!fiber)
115
+ return children;
116
+ if (fiber.stateNode instanceof HTMLElement) {
117
+ children.push(fiber.stateNode);
118
+ return children;
119
+ }
120
+ let child = fiber.child;
121
+ while (child) {
122
+ const match = findChildren(child);
123
+ if (match?.length > 0)
124
+ children.push(...match);
125
+ child = child.sibling;
126
+ }
127
+ return children;
128
+ }
129
+ return () => {
130
+ try {
131
+ return findChildren(fiber);
132
+ }
133
+ catch (e) {
134
+ return [];
135
+ }
136
+ };
137
+ }
138
+ export function BlockDebug(props) {
139
+ if (!env.client || env.admin)
140
+ return _jsx(Fragment, { children: props.children });
141
+ const fiber = useFiber();
142
+ const blockContext = useBlockContext();
143
+ const node = usePageStructureNode({
144
+ type: "block",
145
+ id: "unknown",
146
+ block: ref(props.block),
147
+ context: blockContext ? ref(blockContext) : undefined,
148
+ children: [],
149
+ });
150
+ node.id = blockContext?.instanceId ?? "unknown";
151
+ node.block = ref(props.block);
152
+ node.context = blockContext ? ref(blockContext) : undefined;
153
+ useEffect(() => {
154
+ node.getElements = createGetElements(fiber);
155
+ }, []);
156
+ return _jsx(PageStructureNode, { node: node, children: props.children });
157
+ }
@@ -122,7 +122,7 @@ type EditorConfig = {
122
122
  */
123
123
  export declare function defineEditorConfig(config: EditorConfig): void;
124
124
  export declare function getEditingPostInfo(): PostInfo;
125
- export declare function updateTemplateConfig(): void;
125
+ export declare function updateTemplateConfig(postInfo?: PostInfo): void;
126
126
  export declare function watchEditorTemplate(): void;
127
127
  export {};
128
128
  //# sourceMappingURL=editor-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-config.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/blocks/editor/editor-config.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-config.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/blocks/editor/editor-config.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EAId,MAAM,sBAAsB,CAAA;AAI7B,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;QAGI;IACJ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;;;QAQI;IACJ,UAAU,CAAC,EAAE,CAAC,kBAAkB,GAAG,YAAY,CAAC,EAAE,CAAA;IAClD,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;IACnD,4EAA4E;IAC5E,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,2DAA2D;IAC3D,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,aAAa,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACnC,UAAU,EAAE,GAAG,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAA;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,KAAK,MAAM,GAAG,IAAI,CAAA;AAE9F,eAAO,MAAM,iBAAiB;YACZ,YAAY,GAAG,IAAI;yBACR,gBAAgB;CAC3C,CAAA;AAEF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,QAgC7D;AAED,KAAK,QAAQ,GACT;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,SAAS,EAAE,KAAK,CAAA;IAChB,cAAc,EAAE,KAAK,CAAA;IACrB,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,cAAc,EAAE,KAAK,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,EAAE,KAAK,CAAA;IAChB,cAAc,EAAE,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC/B,CAAA;AAEL,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,GAAG,IAAI,CAAA;AAEzD,KAAK,OAAO,GAAG;IACb,mHAAmH;IACnH,KAAK,EAAE,eAAe,CAAA;IACtB,0EAA0E;IAC1E,MAAM,EAAE,gBAAgB,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,gBAAgB,CAAC,CAAA;CAClE,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,kBAAkB,EAAE,CAAA;IAC1B,EAAE,EAAE,kBAAkB,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAA;IACV,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb;;;QAGI;IACJ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;QAGI;IACJ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAID,KAAK,YAAY,GAAG;IAClB,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC9C,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB,CAAA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,QAKtD;AAED,wBAAgB,kBAAkB,IAiBb,QAAQ,CAC5B;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,WAAuB,QA4BnE;AAED,wBAAgB,mBAAmB,SAgBlC"}
@@ -1,11 +1,14 @@
1
1
  import { proxy } from "valtio";
2
2
  import { applyTemplateBlocks, resolveAcfBlockName, transformBlockTemplate, transformTemplateToBlocks, } from "./block-templates.js";
3
+ import { hash } from "object-code";
4
+ import { adminManifestReader } from "../../internal/read-admin-manifest.js";
3
5
  export const editorConfigStore = proxy({
4
6
  config: null,
5
7
  currentBlocksConfig: {},
6
8
  });
7
9
  export function configureEditorBlocks(config) {
8
10
  const wp = window.wp;
11
+ editorConfigStore.currentBlocksConfig = config;
9
12
  let hideStyles = document.getElementById("title-hider");
10
13
  hideStyles?.remove();
11
14
  if (config.hideTitle) {
@@ -59,38 +62,43 @@ export function getEditingPostInfo() {
59
62
  }
60
63
  return postInfo;
61
64
  }
62
- export function updateTemplateConfig() {
65
+ export function updateTemplateConfig(postInfo = getEditingPostInfo()) {
63
66
  const wp = window.wp;
64
- const postInfo = getEditingPostInfo();
65
67
  const editorConfig = editorConfigStore.config;
66
68
  if (!editorConfig)
67
69
  return;
70
+ // Sometimes the post hasn't loaded yet!
71
+ if (!postInfo.type)
72
+ return;
73
+ if (postInfo.isTemplatePart && postInfo.slug in adminManifestReader.value.blockTemplateParts) {
74
+ const templatePart = adminManifestReader.value.blockTemplateParts[postInfo.slug];
75
+ configureEditorBlocks({
76
+ template: [[templatePart.blockSlug, {}]],
77
+ rootBlocks: ["none"],
78
+ });
79
+ return;
80
+ }
68
81
  const matched = editorConfig.matchers?.find((matcher) => {
69
82
  return matcher.match(postInfo);
70
83
  });
71
84
  if (matched) {
72
85
  const config = typeof matched.config === "function" ? matched.config(postInfo) : matched.config;
73
- editorConfigStore.currentBlocksConfig = config;
74
86
  configureEditorBlocks(config);
75
87
  }
76
88
  else {
77
- editorConfigStore.currentBlocksConfig = {};
78
89
  configureEditorBlocks({});
79
90
  }
80
91
  }
81
92
  export function watchEditorTemplate() {
82
- let lastKey = "unknown";
93
+ let lastKey = -1;
83
94
  let timer = 0;
84
95
  const update = () => {
85
- const post = wp.data.select("core/editor").getCurrentPost();
86
- const template = wp.data.select("core/editor").getPostEdits()?.template ?? post?.template ?? "";
87
- const key = [post.type, template, post.slug, post.title].join(";");
96
+ const info = getEditingPostInfo();
97
+ const key = hash({ ...info, content: "", blocks: "", selection: "" });
88
98
  if (key !== lastKey) {
89
99
  lastKey = key;
90
100
  clearTimeout(timer);
91
- timer = setTimeout(() => {
92
- updateTemplateConfig();
93
- }, 20);
101
+ setTimeout(() => updateTemplateConfig(info), 100);
94
102
  }
95
103
  };
96
104
  wp.data.subscribe(() => {
@@ -1,5 +1,5 @@
1
1
  export declare const blockMetaDescriptors: Map<string, BlockMeta> & {
2
- $$valtioSnapshot: Omit<Map<string, BlockMeta>, "set" | "clear" | "delete">;
2
+ $$valtioSnapshot: Omit<Map<string, BlockMeta>, "set" | "delete" | "clear">;
3
3
  };
4
4
  export declare function whenEditorIsReady(): Promise<void>;
5
5
  export declare function installEDGutenbergHooks(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"installGutenbergHooks.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/blocks/editor/installGutenbergHooks.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,oBAAoB;;CAAgC,CAAA;AAEjE,wBAAgB,iBAAiB,kBAsBhC;AAED,wBAAgB,uBAAuB,SAyQtC"}
1
+ {"version":3,"file":"installGutenbergHooks.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/blocks/editor/installGutenbergHooks.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,oBAAoB;;CAAgC,CAAA;AAEjE,wBAAgB,iBAAiB,kBAsBhC;AAED,wBAAgB,uBAAuB,SAsRtC"}
@@ -170,6 +170,15 @@ export function installEDGutenbergHooks() {
170
170
  });
171
171
  // Recalculate registered blocks when rootBlocks change
172
172
  rootBlocks.listen();
173
+ const blockEditorSelectors = wp.data.select("core/block-editor");
174
+ const originalGetInserterItems = blockEditorSelectors.getInserterItems;
175
+ blockEditorSelectors.getInserterItems = (rootId, options) => {
176
+ const result = originalGetInserterItems(rootId, options);
177
+ if (result.some((item) => item.isAllowedInCurrentRoot)) {
178
+ return result.filter((item) => item.isAllowedInCurrentRoot);
179
+ }
180
+ return result;
181
+ };
173
182
  wp.hooks.addFilter("blocks.registerBlockType", "ed", (item, name) => {
174
183
  // Hook into ACF blocks, customising the edit mode.
175
184
  if (name.startsWith("acf/")) {
@@ -240,6 +249,9 @@ export function installEDGutenbergHooks() {
240
249
  return item.ancestor ? blocksByTag.expand(item.ancestor) : undefined;
241
250
  },
242
251
  get allowedBlocks() {
252
+ if (name === "core/post-content") {
253
+ return [...blocksByTag.expand([...rootBlocks.getRootBlocks()]), "core/block"];
254
+ }
243
255
  return item.allowedBlocks ? [...blocksByTag.expand(item.allowedBlocks), "core/slot-group"] : undefined;
244
256
  },
245
257
  };
@@ -9,4 +9,5 @@ export * from "./editor/usePostEditor.js";
9
9
  export { useBlockContext, useInlineEditableValue, useInnerBlocks, useTemplate, useBlockSelection, } from "./inline-editing.js";
10
10
  export * from "./InnerBlocks.js";
11
11
  export * from "./SlotBlocks.js";
12
+ export { useDebugNode, DebugNode } from "./block-debugger.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAC/F,cAAc,2BAA2B,CAAA;AACzC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAC/F,cAAc,2BAA2B,CAAA;AACzC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA"}
@@ -9,4 +9,5 @@ export * from "./editor/usePostEditor.js";
9
9
  export { useBlockContext, useInlineEditableValue, useInnerBlocks, useTemplate, useBlockSelection, } from "./inline-editing.js";
10
10
  export * from "./InnerBlocks.js";
11
11
  export * from "./SlotBlocks.js";
12
+ export { useDebugNode, DebugNode } from "./block-debugger.js";
12
13
  // export { BlockPropMutator } from "./BlockPropMutator.js"