PluginProbe
Gutenberg / 23.7.2
Gutenberg v23.7.2
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / modules / widget-primitives / index.js

index.js in Gutenberg 23.7.2, at build/modules/widget-primitives/index.js

192 lines 6.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var __create = Object.create;
2 var __defProp = Object.defineProperty;
3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4 var __getOwnPropNames = Object.getOwnPropertyNames;
5 var __getProtoOf = Object.getPrototypeOf;
6 var __hasOwnProp = Object.prototype.hasOwnProperty;
7 var __commonJS = (cb, mod) => function __require() {
8 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9 };
10 var __copyProps = (to, from, except, desc) => {
11 if (from && typeof from === "object" || typeof from === "function") {
12 for (let key of __getOwnPropNames(from))
13 if (!__hasOwnProp.call(to, key) && key !== except)
14 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15 }
16 return to;
17 };
18 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19 // If the importer is in node compatibility mode or this is not an ESM
20 // file that has been converted to a CommonJS file using a Babel-
21 // compatible transform (i.e. "__esModule" has not been set), then set
22 // "default" to the CommonJS "module.exports" for node compatibility.
23 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24 mod
25 ));
26
27 // package-external:@wordpress/element
28 var require_element = __commonJS({
29 "package-external:@wordpress/element"(exports, module) {
30 module.exports = window.wp.element;
31 }
32 });
33
34 // vendor-external:react/jsx-runtime
35 var require_jsx_runtime = __commonJS({
36 "vendor-external:react/jsx-runtime"(exports, module) {
37 module.exports = window.ReactJSXRuntime;
38 }
39 });
40
41 // packages/widget-primitives/build-module/tools/get-lazy-widget-component/get-lazy-widget-component.mjs
42 var import_element = __toESM(require_element(), 1);
43 function isValidWidgetModule(module) {
44 return typeof module === "object" && module !== null && "default" in module && typeof module.default === "function";
45 }
46 var componentCache = /* @__PURE__ */ new Map();
47 function getLazyWidgetComponent(renderModule, resolveWidgetModule) {
48 const cached = componentCache.get(renderModule);
49 if (cached) {
50 return cached;
51 }
52 const lazyComponent = (0, import_element.lazy)(async () => {
53 const module = await resolveWidgetModule(renderModule);
54 if (!isValidWidgetModule(module)) {
55 throw new Error(`Invalid widget module: ${renderModule}`);
56 }
57 return module;
58 });
59 componentCache.set(renderModule, lazyComponent);
60 return lazyComponent;
61 }
62
63 // packages/widget-primitives/build-module/components/widget-render/widget-render.mjs
64 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
65 function WidgetRender({
66 widgetType,
67 attributes,
68 setAttributes,
69 resolveWidgetModule
70 }) {
71 const WidgetComponent = getLazyWidgetComponent(
72 widgetType.renderModule,
73 resolveWidgetModule
74 );
75 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
76 WidgetComponent,
77 {
78 attributes,
79 setAttributes
80 }
81 ) });
82 }
83
84 // packages/widget-primitives/build-module/hooks/use-widget-types.mjs
85 var import_element2 = __toESM(require_element(), 1);
86
87 // packages/widget-primitives/build-module/field-types/field-types.mjs
88 var FIELD_TYPE_NAME_PATTERN = /^[a-z][a-z0-9-]*(\/[a-z][a-z0-9-]*)?$/;
89 var fieldTypes = /* @__PURE__ */ new Map();
90 function registerFieldType(fieldType) {
91 if (!FIELD_TYPE_NAME_PATTERN.test(fieldType.name) || fieldTypes.has(fieldType.name)) {
92 return void 0;
93 }
94 fieldTypes.set(fieldType.name, fieldType);
95 return fieldType;
96 }
97 function resolveFields(fields) {
98 return fields.map((field) => {
99 const fieldType = field.type ? fieldTypes.get(field.type) : void 0;
100 if (!fieldType) {
101 return field;
102 }
103 const { name, baseType, isValid, ...fieldDefaults } = fieldType;
104 const { type, isValid: fieldIsValid, ...rest } = field;
105 return {
106 ...fieldDefaults,
107 ...rest,
108 type: baseType,
109 ...isValid || fieldIsValid ? { isValid: { ...isValid, ...fieldIsValid } } : {}
110 };
111 });
112 }
113
114 // packages/widget-primitives/build-module/hooks/use-widget-types.mjs
115 function useWidgetTypes(records) {
116 const [widgetTypes, setWidgetTypes] = (0, import_element2.useState)([]);
117 const [isResolvingWidgetTypes, setIsResolvingWidgetTypes] = (0, import_element2.useState)(true);
118 (0, import_element2.useEffect)(() => {
119 if (records === null || records === void 0) {
120 setIsResolvingWidgetTypes(true);
121 return;
122 }
123 if (records.length === 0) {
124 setWidgetTypes([]);
125 setIsResolvingWidgetTypes(false);
126 return;
127 }
128 let cancelled = false;
129 setIsResolvingWidgetTypes(true);
130 Promise.all(
131 records.map(async (record) => {
132 if (!record.widget_module) {
133 return null;
134 }
135 try {
136 const module = await import(
137 /* webpackIgnore: true */
138 record.widget_module
139 );
140 if (!module?.default) {
141 return null;
142 }
143 const metadata = module.default;
144 return {
145 ...metadata,
146 ...metadata.attributes ? {
147 attributes: resolveFields(
148 metadata.attributes
149 )
150 } : {},
151 name: record.name,
152 renderModule: record.render_module ?? "",
153 /*
154 * `title` is required:
155 * - Server-side title wins
156 * - Then the module's title
157 * - Then the record's name as fallback
158 */
159 title: record.title ?? metadata.title ?? record.name,
160 ...record.presentation ? { presentation: record.presentation } : {},
161 ...record.category ? { category: record.category } : {},
162 ...record.description ? { description: record.description } : {},
163 ...record.help ? { help: record.help } : {},
164 ...record.keywords ? { keywords: record.keywords } : {},
165 ...record.actions ? { actions: record.actions } : {}
166 };
167 } catch {
168 return null;
169 }
170 })
171 ).then((results) => {
172 if (cancelled) {
173 return;
174 }
175 setWidgetTypes(
176 results.filter((t) => t !== null)
177 );
178 setIsResolvingWidgetTypes(false);
179 });
180 return () => {
181 cancelled = true;
182 };
183 }, [records]);
184 return [widgetTypes, isResolvingWidgetTypes];
185 }
186 export {
187 WidgetRender,
188 registerFieldType,
189 useWidgetTypes
190 };
191 //# sourceMappingURL=index.js.map
192