PluginProbe
Elementor Website Builder – more than just a page builder / trunk
Elementor Website Builder – more than just a page builder vtrunk
4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 All 456 releases
← All changes | assets/js/packages/wp-media/wp-media.js +253 -2 4.1.0-dev3 → trunk View file →
@@ -1,3 +1,254 @@
1 -/*! For license information please see wp-media.js.LICENSE.txt */
2 -!function(){"use strict";var e={"./packages/packages/libs/wp-media/src/errors.ts":function(e,t,a){a.r(t),a.d(t,{WpMediaNotAvailableError:function(){return n},WpPluploadSettingsNotAvailableError:function(){return i}});var r=a("@elementor/utils");const n=(0,r.createError)({code:"wp_media_not_available",message:"`wp.media` is not available, make sure the `media-models` handle is set in the dependencies array"}),i=(0,r.createError)({code:"wp_plupload_settings_not_available",message:"`_wpPluploadSettings` is not available, make sure a wp media uploader is open"})},"./packages/packages/libs/wp-media/src/get-media-attachment.ts":function(e,t,a){a.r(t),a.d(t,{getMediaAttachment:function(){return getMediaAttachment}});var r=a("./packages/packages/libs/wp-media/src/media.ts"),n=a("./packages/packages/libs/wp-media/src/normalize.ts");async function getMediaAttachment({id:e}){if(!e)return null;const t=(0,r.default)().attachment(e),a=t.toJSON();if("url"in a)return(0,n.default)(a);try{return(0,n.default)(await t.fetch())}catch{return null}}},"./packages/packages/libs/wp-media/src/hooks/use-wp-media-attachment.ts":function(e,t,a){a.r(t),a.d(t,{default:function(){return useWpMediaAttachment}});var r=a("@elementor/query"),n=a("./packages/packages/libs/wp-media/src/get-media-attachment.ts");function useWpMediaAttachment(e){return(0,r.useQuery)({queryKey:["wp-attachment",e],queryFn:()=>(0,n.getMediaAttachment)({id:e}),enabled:!!e})}},"./packages/packages/libs/wp-media/src/hooks/use-wp-media-frame.ts":function(e,t,a){a.r(t),a.d(t,{default:function(){return useWpMediaFrame}});var r=a("react"),n=a("./packages/packages/libs/wp-media/src/media.ts"),i=a("./packages/packages/libs/wp-media/src/normalize.ts"),s=a("./packages/packages/libs/wp-media/src/wp-plupload-settings.ts");function useWpMediaFrame(e){const t=(0,r.useRef)();return(0,r.useEffect)(()=>()=>{cleanupFrame(t.current)},[]),{open:(a={})=>{cleanupFrame(t.current),t.current=function createFrame({onSelect:e,onSelectUrl:t,allowUrlImport:a,multiple:r,mediaTypes:c,selected:p,title:u,mode:l="browse",currentUrl:d,currentAlt:m}){const f=(0,n.default)()({title:u,multiple:r,library:{type:getMimeTypes(c)},...a?{frame:"post"}:{}}).on("open",()=>{!function setTypeCaller(e){e.uploader.uploader.param("uploadTypeCaller","elementor-wp-media-upload")}(f),function applyMode(e,t="browse",a,r){"url"===t?(e.setState("embed"),(a||r)&&setTimeout(()=>{a&&e.state()?.props?.set("url",a),r&&e.state()?.props?.set("alt",r)},0)):e.content.mode(t)}(f,l,d,m),"url"!==l&&function applySelection(e,t){const a=("number"==typeof t?[t]:t)?.filter(e=>!!e).map(e=>(0,n.default)().attachment(e));e.state().get("selection").set(a||[])}(f,p)}).on("insert select",()=>function select(e,t,a,r){const n=e.state();if("embed"===n.get("id")){if(r){const e=n.props?.get("url"),t=n.props?.get("alt");e&&r(e,t)}return}const s=n.get("selection").toJSON().map(i.default),o=a;o(t?s:s[0])}(f,r,e,t));a&&f.on("ready open",()=>function restrictFrameMenu(e){e.$el?.find(o)?.remove()}(f));return function handleExtensions(e,t){const a=(0,s.default)().defaults.filters.mime_types?.[0]?.extensions;e.on("ready",()=>{(0,s.default)().defaults.filters.mime_types=[{extensions:getExtensions(t)}]}),e.on("close",()=>{(0,s.default)().defaults.filters.mime_types=a?[{extensions:a}]:[]})}(f,c),f}({...e,...a}),t.current?.open()}}}function cleanupFrame(e){e?.detach(),e?.remove()}const o=["#menu-item-gallery","#menu-item-featured-image","#menu-item-playlist","#menu-item-video-playlist"].join(",");const c=["avif","bmp","gif","ico","jpe","jpeg","jpg","png","webp"],p=["mp4","webm","ogg","mov","m4v","avi","wmv","mpg","mpeg","3gp","3g2"];function getMimeTypes(e){const t={image:c.map(e=>`image/${e}`),svg:["image/svg+xml"],video:["video/mp4","video/webm","video/ogg","video/quicktime","video/x-m4v","video/avi","video/x-ms-wmv","video/mpeg","video/3gpp","video/3gpp2"]};return e.reduce((e,a)=>e.concat(t[a]),[])}function getExtensions(e){const t={image:c,svg:["svg"],video:p};return e.reduce((e,a)=>e.concat(t[a]),[]).join(",")}},"./packages/packages/libs/wp-media/src/media.ts":function(e,t,a){a.r(t);var r=a("./packages/packages/libs/wp-media/src/errors.ts");const n=window;t.default=()=>{if(!n.wp?.media)throw new r.WpMediaNotAvailableError;return n.wp.media}},"./packages/packages/libs/wp-media/src/normalize.ts":function(e,t,a){function normalize(e){const{filesizeInBytes:t,filesizeHumanReadable:a,author:r,authorName:n,...i}=e;return{...i,filesize:{inBytes:t,humanReadable:a},author:{id:parseInt(r),name:n}}}a.r(t),a.d(t,{default:function(){return normalize}})},"./packages/packages/libs/wp-media/src/wp-plupload-settings.ts":function(e,t,a){a.r(t);var r=a("./packages/packages/libs/wp-media/src/errors.ts");const n=window;t.default=()=>{if(!n._wpPluploadSettings)throw new r.WpPluploadSettingsNotAvailableError;return n._wpPluploadSettings}},"@elementor/query":function(e){e.exports=window.elementorV2.query},"@elementor/utils":function(e){e.exports=window.elementorV2.utils},react:function(e){e.exports=window.React}},t={};function __webpack_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};return e[a](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};!function(){__webpack_require__.r(a),__webpack_require__.d(a,{getMediaAttachment:function(){return r.getMediaAttachment},useWpMediaAttachment:function(){return e.default},useWpMediaFrame:function(){return t.default}});var e=__webpack_require__("./packages/packages/libs/wp-media/src/hooks/use-wp-media-attachment.ts"),t=__webpack_require__("./packages/packages/libs/wp-media/src/hooks/use-wp-media-frame.ts"),r=__webpack_require__("./packages/packages/libs/wp-media/src/get-media-attachment.ts")}(),(window.elementorV2=window.elementorV2||{}).wpMedia=a}(),window.elementorV2.wpMedia?.init?.();
1 +(function(_elementor_query, _elementor_utils, react) {
2 +
3 +//#region \0rolldown/runtime.js
4 + var __defProp = Object.defineProperty;
5 + var __name = (target, value) => __defProp(target, "name", {
6 + value,
7 + configurable: true
8 + });
9 + var __exportAll = (all, no_symbols) => {
10 + let target = {};
11 + for (var name in all) {
12 + __defProp(target, name, {
13 + get: all[name],
14 + enumerable: true
15 + });
16 + }
17 + if (!no_symbols) {
18 + __defProp(target, Symbol.toStringTag, { value: "Module" });
19 + }
20 + return target;
21 + };
22 +
23 +//#endregion
24 +
25 +//#region packages/packages/libs/wp-media/src/errors.ts
26 + var WpMediaNotAvailableError = (0, _elementor_utils.createError)({
27 + code: "wp_media_not_available",
28 + message: "`wp.media` is not available, make sure the `media-models` handle is set in the dependencies array"
29 + });
30 + var WpPluploadSettingsNotAvailableError = (0, _elementor_utils.createError)({
31 + code: "wp_plupload_settings_not_available",
32 + message: "`_wpPluploadSettings` is not available, make sure a wp media uploader is open"
33 + });
34 +
35 +//#endregion
36 +//#region packages/packages/libs/wp-media/src/media.ts
37 + var wpMediaWindow = window;
38 + var media_default = /* @__PURE__ */ __name(() => {
39 + if (!wpMediaWindow.wp?.media) throw new WpMediaNotAvailableError();
40 + return wpMediaWindow.wp.media;
41 + }, "default");
42 +
43 +//#endregion
44 +//#region packages/packages/libs/wp-media/src/normalize.ts
45 + function normalize(attachment) {
46 + const { filesizeInBytes, filesizeHumanReadable, author, authorName, ...rest } = attachment;
47 + return {
48 + ...rest,
49 + filesize: {
50 + inBytes: filesizeInBytes,
51 + humanReadable: filesizeHumanReadable
52 + },
53 + author: {
54 + id: parseInt(author),
55 + name: authorName
56 + }
57 + };
58 + }
59 +
60 +//#endregion
61 +//#region packages/packages/libs/wp-media/src/get-media-attachment.ts
62 + async function fetchAttachmentFromWP(id) {
63 + const model = media_default().attachment(id);
64 + const wpAttachment = model.toJSON();
65 + if ("url" in wpAttachment) return normalize(wpAttachment);
66 + try {
67 + return normalize(await model.fetch());
68 + } catch {
69 + return null;
70 + }
71 + }
72 + async function getMediaAttachment({ id }) {
73 + if (!id) return null;
74 + return (0, _elementor_query.getQueryClient)().ensureQueryData({
75 + queryKey: ["wp-attachment", id],
76 + queryFn: () => fetchAttachmentFromWP(id)
77 + });
78 + }
79 +
80 +//#endregion
81 +//#region packages/packages/libs/wp-media/src/hooks/use-wp-media-attachment.ts
82 + function useWpMediaAttachment(id) {
83 + return (0, _elementor_query.useQuery)({
84 + queryKey: ["wp-attachment", id],
85 + queryFn: () => fetchAttachmentFromWP(id),
86 + enabled: !!id
87 + });
88 + }
89 +
90 +//#endregion
91 +//#region packages/packages/libs/wp-media/src/wp-plupload-settings.ts
92 + var wpPluploadSettingsWindow = window;
93 + var wp_plupload_settings_default = /* @__PURE__ */ __name(() => {
94 + if (!wpPluploadSettingsWindow._wpPluploadSettings) throw new WpPluploadSettingsNotAvailableError();
95 + return wpPluploadSettingsWindow._wpPluploadSettings;
96 + }, "default");
97 +
98 +//#endregion
99 +//#region packages/packages/libs/wp-media/src/hooks/use-wp-media-frame.ts
100 + function useWpMediaFrame(options) {
101 + const frame = (0, react.useRef)();
102 + const open = (openOptions = {}) => {
103 + cleanupFrame(frame.current);
104 + frame.current = createFrame({
105 + ...options,
106 + ...openOptions
107 + });
108 + frame.current?.open();
109 + };
110 + (0, react.useEffect)(() => {
111 + return () => {
112 + cleanupFrame(frame.current);
113 + };
114 + }, []);
115 + return { open };
116 + }
117 + function createFrame({ onSelect, onSelectUrl, allowUrlImport, multiple, mediaTypes, selected, title, mode = "browse", currentUrl, currentAlt }) {
118 + const frame = media_default()({
119 + title,
120 + multiple,
121 + library: { type: getMimeTypes(mediaTypes) },
122 + ...allowUrlImport ? { frame: "post" } : {}
123 + }).on("open", () => {
124 + setTypeCaller(frame);
125 + applyMode(frame, mode, currentUrl, currentAlt);
126 + if (mode !== "url") applySelection(frame, selected);
127 + }).on("insert select", () => select(frame, multiple, onSelect, onSelectUrl));
128 + if (allowUrlImport) frame.on("ready open", () => restrictFrameMenu(frame));
129 + handleExtensions(frame, mediaTypes);
130 + return frame;
131 + }
132 + function cleanupFrame(frame) {
133 + frame?.detach();
134 + frame?.remove();
135 + }
136 + function applyMode(frame, mode = "browse", currentUrl, currentAlt) {
137 + if (mode === "url") {
138 + frame.setState("embed");
139 + if (currentUrl || currentAlt) setTimeout(() => {
140 + if (currentUrl) frame.state()?.props?.set("url", currentUrl);
141 + if (currentAlt) frame.state()?.props?.set("alt", currentAlt);
142 + }, 0);
143 + } else frame.content.mode(mode);
144 + }
145 + function applySelection(frame, selected) {
146 + const selectedAttachments = (typeof selected === "number" ? [selected] : selected)?.filter((id) => !!id).map((id) => media_default().attachment(id));
147 + frame.state().get("selection").set(selectedAttachments || []);
148 + }
149 + function select(frame, multiple, onSelect, onSelectUrl) {
150 + const state = frame.state();
151 + if (state.get("id") === "embed") {
152 + if (onSelectUrl) {
153 + const url = state.props?.get("url");
154 + const alt = state.props?.get("alt");
155 + if (url) onSelectUrl(url, alt);
156 + }
157 + return;
158 + }
159 + const attachments = state.get("selection").toJSON().map(normalize);
160 + onSelect(multiple ? attachments : attachments[0]);
161 + }
162 + var FRAME_MENU_ITEMS_TO_REMOVE = [
163 + "#menu-item-gallery",
164 + "#menu-item-featured-image",
165 + "#menu-item-playlist",
166 + "#menu-item-video-playlist"
167 + ].join(",");
168 + function restrictFrameMenu(frame) {
169 + frame.$el?.find(FRAME_MENU_ITEMS_TO_REMOVE)?.remove();
170 + }
171 + function setTypeCaller(frame) {
172 + frame.uploader.uploader.param("uploadTypeCaller", "elementor-wp-media-upload");
173 + }
174 + function handleExtensions(frame, mediaTypes) {
175 + const defaultExtensions = wp_plupload_settings_default().defaults.filters.mime_types?.[0]?.extensions;
176 + frame.on("ready", () => {
177 + wp_plupload_settings_default().defaults.filters.mime_types = [{ extensions: getExtensions(mediaTypes) }];
178 + });
179 + frame.on("close", () => {
180 + wp_plupload_settings_default().defaults.filters.mime_types = defaultExtensions ? [{ extensions: defaultExtensions }] : [];
181 + });
182 + }
183 + var imageExtensions = [
184 + "avif",
185 + "bmp",
186 + "gif",
187 + "ico",
188 + "jpe",
189 + "jpeg",
190 + "jpg",
191 + "png",
192 + "webp"
193 + ];
194 + var videoExtensions = [
195 + "mp4",
196 + "webm",
197 + "ogg",
198 + "mov",
199 + "m4v",
200 + "avi",
201 + "wmv",
202 + "mpg",
203 + "mpeg",
204 + "3gp",
205 + "3g2"
206 + ];
207 + function getMimeTypes(mediaTypes) {
208 + const mimeTypesPerType = {
209 + image: imageExtensions.map((extension) => `image/${extension}`),
210 + svg: ["image/svg+xml"],
211 + video: [
212 + "video/mp4",
213 + "video/webm",
214 + "video/ogg",
215 + "video/quicktime",
216 + "video/x-m4v",
217 + "video/avi",
218 + "video/x-ms-wmv",
219 + "video/mpeg",
220 + "video/3gpp",
221 + "video/3gpp2"
222 + ]
223 + };
224 + return mediaTypes.reduce((prev, currentType) => {
225 + return prev.concat(mimeTypesPerType[currentType]);
226 + }, []);
227 + }
228 + function getExtensions(mediaTypes) {
229 + const extensionsPerType = {
230 + image: imageExtensions,
231 + svg: ["svg"],
232 + video: videoExtensions
233 + };
234 + return mediaTypes.reduce((prev, currentType) => {
235 + return prev.concat(extensionsPerType[currentType]);
236 + }, []).join(",");
237 + }
238 +
239 +//#endregion
240 +//#region packages/packages/libs/wp-media/src/index.ts
241 + var src_exports = /* @__PURE__ */ __exportAll({
242 + getMediaAttachment: () => getMediaAttachment,
243 + useWpMediaAttachment: () => useWpMediaAttachment,
244 + useWpMediaFrame: () => useWpMediaFrame
245 + });
246 +
247 +//#endregion
248 +//#region \0elementor-package-library-entry
249 + (window.elementorV2 = window.elementorV2 || {}).wpMedia = src_exports;
250 +
251 +//#endregion
252 +})(elementorV2.query, elementorV2.utils, React);
253 +window.elementorV2.wpMedia?.init?.();
3 254 //# sourceMappingURL=wp-media.js.map