| @@ -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 |