@formio/js 5.4.2 → 5.4.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.
- package/dist/formio.embed.js +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.js +23 -23
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +25 -25
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +1 -1
- package/dist/formio.js +5 -5
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/Element.js +1 -1
- package/lib/cjs/Embed.js +1 -1
- package/lib/cjs/Formio.js +1 -1
- package/lib/cjs/Wizard.d.ts +1 -0
- package/lib/cjs/Wizard.js +15 -0
- package/lib/cjs/components/datagrid/DataGrid.js +8 -0
- package/lib/cjs/components/file/File.js +12 -5
- package/lib/cjs/components/file/editForm/File.edit.file.d.ts +9 -3
- package/lib/cjs/components/file/editForm/File.edit.file.js +20 -23
- package/lib/cjs/components/html/HTML.d.ts +1 -1
- package/lib/cjs/components/html/HTML.js +7 -5
- package/lib/cjs/components/number/Number.js +5 -1
- package/lib/cjs/components/radio/Radio.js +10 -0
- package/lib/cjs/components/signature/Signature.js +16 -14
- package/lib/cjs/components/signature/editForm/Signature.edit.display.d.ts +4 -10
- package/lib/cjs/components/signature/editForm/Signature.edit.display.js +8 -8
- package/lib/cjs/package.json +1 -1
- package/lib/cjs/providers/storage/indexeddb.js +14 -5
- package/lib/cjs/providers/storage/url.js +13 -2
- package/lib/cjs/providers/storage/xhr.js +1 -1
- package/lib/cjs/templates/index.d.ts +1 -0
- package/lib/mjs/Element.js +1 -1
- package/lib/mjs/Embed.js +1 -1
- package/lib/mjs/Formio.js +1 -1
- package/lib/mjs/Wizard.d.ts +1 -0
- package/lib/mjs/Wizard.js +15 -0
- package/lib/mjs/components/datagrid/DataGrid.js +7 -0
- package/lib/mjs/components/file/File.js +12 -5
- package/lib/mjs/components/file/editForm/File.edit.file.d.ts +9 -3
- package/lib/mjs/components/file/editForm/File.edit.file.js +20 -23
- package/lib/mjs/components/html/HTML.d.ts +1 -1
- package/lib/mjs/components/html/HTML.js +7 -5
- package/lib/mjs/components/number/Number.js +5 -1
- package/lib/mjs/components/radio/Radio.js +10 -0
- package/lib/mjs/components/signature/Signature.js +15 -13
- package/lib/mjs/components/signature/editForm/Signature.edit.display.d.ts +4 -10
- package/lib/mjs/components/signature/editForm/Signature.edit.display.js +6 -8
- package/lib/mjs/package.json +1 -1
- package/lib/mjs/providers/storage/indexeddb.js +14 -5
- package/lib/mjs/providers/storage/url.js +13 -2
- package/lib/mjs/providers/storage/xhr.js +1 -1
- package/lib/mjs/templates/index.d.ts +1 -0
- package/package.json +2 -2
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
/*! choices.js v11.1.0 | © 2025 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
|
|
29
29
|
|
|
30
|
-
/*! formiojs v5.4.
|
|
30
|
+
/*! formiojs v5.4.3 | https://unpkg.com/formiojs@5.4.3/LICENSE.txt */
|
|
31
31
|
|
|
32
32
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
|
33
33
|
|
package/dist/formio.js
CHANGED
|
@@ -3666,7 +3666,7 @@ eval("{\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n//
|
|
|
3666
3666
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3667
3667
|
|
|
3668
3668
|
"use strict";
|
|
3669
|
-
eval("{\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormBuilder = exports.Form = exports.Formio = void 0;\nconst CDN_js_1 = __importDefault(__webpack_require__(/*! ./CDN.js */ \"./lib/cjs/CDN.js\"));\nclass Formio {\n static setLicense(license, norecurse = false) {\n _a.license = license;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setLicense(license);\n }\n }\n static setBaseUrl(url, norecurse = false) {\n _a.baseUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setBaseUrl(url);\n }\n }\n static setApiUrl(url, norecurse = false) {\n _a.baseUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setApiUrl(url);\n }\n }\n static setProjectUrl(url, norecurse = false) {\n _a.projectUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setProjectUrl(url);\n }\n }\n static setAppUrl(url, norecurse = false) {\n _a.projectUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setAppUrl(url);\n }\n }\n static setPathType(type, norecurse = false) {\n _a.pathType = type;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setPathType(type);\n }\n }\n static debug(...args) {\n if (_a.config.debug) {\n console.log(...args);\n }\n }\n static clearCache() {\n if (_a.FormioClass) {\n _a.FormioClass.clearCache();\n }\n }\n static global(prop, flag = '') {\n const globalValue = window[prop];\n if (flag && globalValue && !globalValue[flag]) {\n return null;\n }\n _a.debug(`Getting global ${prop}`, globalValue);\n return globalValue;\n }\n static use(module) {\n if (_a.FormioClass && _a.FormioClass.isRenderer) {\n _a.FormioClass.use(module);\n }\n else {\n _a.modules.push(module);\n }\n }\n static createElement(type, attrs, children) {\n const element = document.createElement(type);\n if (!attrs) {\n return element;\n }\n Object.keys(attrs).forEach((key) => {\n element.setAttribute(key, attrs[key]);\n });\n (children || []).forEach((child) => {\n element.appendChild(_a.createElement(child.tag, child.attrs, child.children));\n });\n return element;\n }\n static addScript(wrapper, src, name, flag = '') {\n return __awaiter(this, void 0, void 0, function* () {\n if (!src) {\n return Promise.resolve();\n }\n if (typeof src !== 'string' && src.length) {\n return Promise.all(src.map((ref) => _a.addScript(wrapper, ref)));\n }\n if (name && _a.global(name, flag)) {\n _a.debug(`${name} already loaded.`);\n return Promise.resolve(_a.global(name));\n }\n _a.debug('Adding Script', src);\n try {\n wrapper.appendChild(_a.createElement('script', {\n src,\n }));\n }\n catch (err) {\n _a.debug(err);\n return Promise.resolve();\n }\n if (!name) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n _a.debug(`Waiting to load ${name}`);\n const wait = setInterval(() => {\n if (_a.global(name, flag)) {\n clearInterval(wait);\n _a.debug(`${name} loaded.`);\n resolve(_a.global(name));\n }\n }, 100);\n });\n });\n }\n static addStyles(wrapper, href) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!href) {\n return;\n }\n if (typeof href !== 'string' && href.length) {\n href.forEach((ref) => _a.addStyles(wrapper, ref));\n return;\n }\n _a.debug('Adding Styles', href);\n wrapper.appendChild(_a.createElement('link', {\n rel: 'stylesheet',\n href,\n }));\n });\n }\n static submitDone(instance, submission) {\n return __awaiter(this, void 0, void 0, function* () {\n _a.debug('Submision Complete', submission);\n if (_a.config.submitDone) {\n _a.config.submitDone(submission, instance);\n }\n const successMessage = (_a.config.success || '').toString();\n if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {\n instance.element.innerHTML = `<div class=\"alert-success\" role=\"alert\">${successMessage}</div>`;\n }\n const announcementMessage = successMessage && successMessage.toLowerCase() !== 'false'\n ? successMessage\n : 'Form submission complete';\n let liveRegion = document.getElementById('formio-announcements');\n if (!liveRegion) {\n liveRegion = _a.createElement('div', {\n id: 'formio-announcements',\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n style: 'position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0);',\n });\n document.body.appendChild(liveRegion);\n }\n // Announce the submission completion using VPAT clear-and-reset technique\n liveRegion.textContent = '';\n liveRegion.setAttribute('aria-live', 'off');\n requestAnimationFrame(() => {\n setTimeout(() => {\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.textContent = announcementMessage;\n setTimeout(() => {\n if (liveRegion) {\n liveRegion.textContent = '';\n }\n }, 1000);\n }, 100);\n });\n let returnUrl = _a.config.redirect;\n // Allow form based configuration for return url.\n if (!returnUrl &&\n instance._form &&\n instance._form.settings &&\n (instance._form.settings.returnUrl || instance._form.settings.redirect)) {\n _a.debug('Return url found in form configuration');\n returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect;\n }\n if (returnUrl) {\n const formSrc = instance.formio ? instance.formio.formUrl : '';\n const hasQuery = !!returnUrl.match(/\\?/);\n const isOrigin = returnUrl.indexOf(location.origin) === 0;\n returnUrl += hasQuery ? '&' : '?';\n returnUrl += `sub=${submission._id}`;\n if (!isOrigin && formSrc) {\n returnUrl += `&form=${encodeURIComponent(formSrc)}`;\n }\n _a.debug('Return URL', returnUrl);\n window.location.href = returnUrl;\n if (isOrigin) {\n window.location.reload();\n }\n }\n });\n }\n // Return the full script if the builder is being used.\n static formioScript(script, builder) {\n builder = builder || _a.config.includeBuilder;\n if (_a.fullAdded || builder) {\n _a.fullAdded = true;\n return script.replace('formio.form', 'formio.full');\n }\n return script;\n }\n static addLibrary(libWrapper, lib, name) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!lib) {\n return;\n }\n if (lib.dependencies) {\n for (let i = 0; i < lib.dependencies.length; i++) {\n const libName = lib.dependencies[i];\n yield _a.addLibrary(libWrapper, _a.config.libs[libName], libName);\n }\n }\n if (lib.css) {\n yield _a.addStyles(lib.global ? document.body : libWrapper, lib.css);\n }\n if (lib.js) {\n const module = yield _a.addScript(lib.global ? document.body : libWrapper, lib.js, lib.use ? name : false);\n if (lib.use) {\n _a.debug(`Using ${name}`);\n const options = lib.options || {};\n if (!options.license && _a.license) {\n options.license = _a.license;\n }\n _a.use(typeof lib.use === 'function' ? lib.use(module) : module, options);\n }\n }\n if (lib.globalStyle) {\n const style = _a.createElement('style');\n style.type = 'text/css';\n style.innerHTML = lib.globalStyle;\n document.body.appendChild(style);\n }\n });\n }\n static addLoader(wrapper) {\n return __awaiter(this, void 0, void 0, function* () {\n wrapper.appendChild(_a.createElement('div', {\n class: 'formio-loader',\n }, [\n {\n tag: 'div',\n attrs: {\n class: 'loader-wrapper',\n },\n children: [\n {\n tag: 'div',\n attrs: {\n class: 'loader text-center',\n },\n },\n ],\n },\n ]));\n });\n }\n static init(element, options = {}, builder = false) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n _a.cdn = new CDN_js_1.default(_a.config.cdn, _a.config.cdnUrls || {});\n _a.config.libs = _a.config.libs || {\n uswds: {\n dependencies: ['fontawesome'],\n js: `${_a.cdn.uswds}/uswds.min.js`,\n css: `${_a.cdn.uswds}/uswds.min.css`,\n use: true,\n },\n fontawesome: {\n // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need\n // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.\n css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`,\n globalStyle: `@font-face {\n font-family: 'FontAwesome';\n src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0');\n src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');\n font-weight: normal;\n font-style: normal;\n }`,\n },\n bootstrap4: {\n dependencies: ['fontawesome'],\n css: `${_a.cdn.bootstrap4}/css/bootstrap.min.css`,\n },\n bootstrap: {\n dependencies: ['bootstrap-icons'],\n css: `${_a.cdn.bootstrap}/css/bootstrap.min.css`,\n },\n 'bootstrap-icons': {\n // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need\n // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.\n css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css',\n globalStyle: `@font-face {\n font-display: block;\n font-family: \"bootstrap-icons\";\n src: url(\"https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6\") format(\"woff2\"),\n url(\"https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6\") format(\"woff\");\n }`,\n },\n };\n // Add all bootswatch templates.\n [\n 'cerulean',\n 'cosmo',\n 'cyborg',\n 'darkly',\n 'flatly',\n 'journal',\n 'litera',\n 'lumen',\n 'lux',\n 'materia',\n 'minty',\n 'pulse',\n 'sandstone',\n 'simplex',\n 'sketchy',\n 'slate',\n 'solar',\n 'spacelab',\n 'superhero',\n 'united',\n 'yeti',\n ].forEach((template) => {\n _a.config.libs[template] = {\n dependencies: ['bootstrap-icons'],\n css: `${_a.cdn.bootswatch}/dist/${template}/bootstrap.min.css`,\n };\n });\n const id = _a.config.id || `formio-${Math.random().toString(36).substring(7)}`;\n const hasQuillComponent = (components = []) => {\n if (!Array.isArray(components)) {\n return false;\n }\n return components.some((component) => {\n var _b, _c;\n if (!component || typeof component !== 'object') {\n return false;\n }\n const isQuillTextarea = component.type === 'textarea' &&\n component.wysiwyg === true &&\n component.editor === 'quill';\n return (isQuillTextarea ||\n hasQuillComponent(component.components) ||\n hasQuillComponent((_b = component.columns) === null || _b === void 0 ? void 0 : _b.flatMap((column) => column.components || [])) ||\n hasQuillComponent((_c = component.rows) === null || _c === void 0 ? void 0 : _c.flatMap((row) => row.flatMap((cell) => cell.components || []))));\n });\n };\n const disableShadowForQuill = hasQuillComponent((_b = _a.config.form) === null || _b === void 0 ? void 0 : _b.components);\n // Create a new wrapper and add the element inside of a new wrapper.\n let wrapper = _a.createElement('div', {\n id: `${id}-wrapper`,\n });\n element.parentNode.insertBefore(wrapper, element);\n // If we include the libraries, then we will attempt to run this in shadow dom.\n const useShadowDom = _a.config.includeLibs &&\n !_a.config.noshadow &&\n !disableShadowForQuill &&\n typeof wrapper.attachShadow === 'function';\n if (useShadowDom) {\n wrapper = wrapper.attachShadow({\n mode: 'open',\n });\n options.shadowRoot = wrapper;\n // Due to an issue with quill not loading styles in the shadowdom, we need to add quill styles and js to the shadowdom\n const quill = {\n js: `${_a.cdn.quill}/quill.js`,\n css: `${_a.cdn.quill}/quill.snow.css`,\n };\n yield _a.addLibrary(wrapper, quill, 'quill');\n }\n element.parentNode.removeChild(element);\n wrapper.appendChild(element);\n // If this is inside of shadow dom, then we need to add the styles and scripts to the shadow dom.\n const libWrapper = useShadowDom ? wrapper : document.body;\n // Load the renderer styles.\n yield _a.addStyles(libWrapper, _a.config.embedCSS || `${_a.cdn.js}/formio.embed.css`);\n // Add a loader.\n _a.addLoader(wrapper);\n const formioSrc = _a.config.full ? 'formio.full' : 'formio.form';\n const renderer = _a.config.debug ? formioSrc : `${formioSrc}.min`;\n _a.FormioClass = yield _a.addScript(libWrapper, _a.formioScript(_a.config.script || `${_a.cdn.js}/${renderer}.js`, builder), 'Formio', builder ? 'isBuilder' : 'isRenderer');\n _a.FormioClass.cdn = _a.cdn;\n _a.FormioClass.setBaseUrl(options.baseUrl || _a.baseUrl || _a.config.base);\n _a.FormioClass.setProjectUrl(options.projectUrl || _a.projectUrl || _a.config.project);\n _a.FormioClass.language = _a.language;\n _a.setLicense(_a.license || _a.config.license || false);\n _a.modules.forEach((module) => {\n _a.FormioClass.use(module);\n });\n if (_a.icons) {\n _a.FormioClass.icons = _a.icons;\n }\n if (_a.pathType) {\n _a.FormioClass.setPathType(_a.pathType);\n }\n // Add libraries if they wish to include the libs.\n if (_a.config.template && _a.config.includeLibs) {\n yield _a.addLibrary(libWrapper, _a.config.libs[_a.config.template], _a.config.template);\n }\n if (!_a.config.libraries) {\n _a.config.libraries = _a.config.modules || {};\n }\n // Adding premium if it is provided via the config.\n if (_a.config.premium) {\n _a.config.libraries.premium = _a.config.premium;\n }\n // Allow adding dynamic modules.\n if (_a.config.libraries) {\n for (const name in _a.config.libraries) {\n const lib = _a.config.libraries[name];\n lib.use = lib.use || true;\n yield _a.addLibrary(libWrapper, lib, name);\n }\n }\n yield _a.addStyles(libWrapper, _a.formioScript(_a.config.style || `${_a.cdn.js}/${renderer}.css`, builder));\n if (_a.config.before) {\n yield _a.config.before(_a.FormioClass, element, _a.config);\n }\n _a.FormioClass.license = true;\n _a._formioReady(_a.FormioClass);\n return wrapper;\n });\n }\n // Called after an instance has been created.\n static afterCreate(instance, wrapper, readyEvent) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n const loader = wrapper.querySelector('.formio-loader');\n if (loader) {\n wrapper.removeChild(loader);\n }\n (_b = _a.FormioClass.events) === null || _b === void 0 ? void 0 : _b.emit(readyEvent, instance);\n if (_a.config.after) {\n _a.debug('Calling ready callback');\n _a.config.after(instance, _a.config);\n }\n return instance;\n });\n }\n // Create a new form.\n static createForm(element, form, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (_a.FormioClass) {\n return _a.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true }));\n }\n const wrapper = yield _a.init(element, options);\n return _a.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {\n // Set the default submission data.\n if (_a.config.submission) {\n _a.debug('Setting submission', _a.config.submission);\n instance.submission = _a.config.submission;\n }\n // Call the after create method.\n _a.afterCreate(instance, wrapper, 'formEmbedded');\n return instance;\n });\n });\n }\n // Create a form builder.\n static builder(element, form, options = {}) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n if ((_b = _a.FormioClass) === null || _b === void 0 ? void 0 : _b.builder) {\n return _a.FormioClass.builder(element, form, options);\n }\n const wrapper = yield _a.init(element, options, true);\n return _a.FormioClass.builder(element, form, options).then((instance) => {\n _a.afterCreate(instance, wrapper, 'builderEmbedded');\n return instance;\n });\n });\n }\n}\nexports.Formio = Formio;\n_a = Formio;\nFormio.FormioClass = null;\nFormio.config = {};\nFormio.modules = [];\nFormio.icons = '';\nFormio.license = '';\nFormio.formioReady = new Promise((ready, reject) => {\n _a._formioReady = ready;\n _a._formioReadyReject = reject;\n});\nFormio.version = '5.4.2';\n// Create a report.\nFormio.Report = {\n create: (element, submission, options = {}) => __awaiter(void 0, void 0, void 0, function* () {\n var _b;\n if ((_b = _a.FormioClass) === null || _b === void 0 ? void 0 : _b.Report) {\n return _a.FormioClass.Report.create(element, submission, options);\n }\n const wrapper = yield _a.init(element, options, true);\n return _a.FormioClass.Report.create(element, submission, options).then((instance) => {\n _a.afterCreate(instance, wrapper, 'reportEmbedded');\n return instance;\n });\n }),\n};\nCDN_js_1.default.defaultCDN = Formio.version.includes('rc') ? 'https://cdn.test-form.io' : 'https://cdn.form.io';\nclass Form {\n constructor(element, form, options) {\n this.form = form;\n this.element = element;\n this.options = options || {};\n this.init();\n this.instance = {\n proxy: true,\n ready: this.ready,\n destroy: () => { },\n };\n }\n init() {\n if (this.instance && !this.instance.proxy) {\n this.instance.destroy();\n }\n this.element.innerHTML = '';\n this.ready = this.create().then((instance) => {\n this.instance = instance;\n this.form = instance.form;\n return instance;\n });\n }\n create() {\n return Formio.createForm(this.element, this.form, this.options);\n }\n setForm(form) {\n this.form = form;\n if (this.instance) {\n this.instance.setForm(form);\n }\n }\n setDisplay(display) {\n if (this.instance.proxy) {\n return this.ready;\n }\n this.form.display = display;\n this.instance.destroy();\n this.ready = this.create().then((instance) => {\n this.instance = instance;\n this.setForm(this.form);\n });\n return this.ready;\n }\n}\nexports.Form = Form;\nclass FormBuilder extends Form {\n create() {\n return Formio.builder(this.element, this.form, this.options);\n }\n}\nexports.FormBuilder = FormBuilder;\nFormio.Form = Form;\nFormio.FormBuilder = FormBuilder;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/Embed.js?\n}");
|
|
3669
|
+
eval("{\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormBuilder = exports.Form = exports.Formio = void 0;\nconst CDN_js_1 = __importDefault(__webpack_require__(/*! ./CDN.js */ \"./lib/cjs/CDN.js\"));\nclass Formio {\n static setLicense(license, norecurse = false) {\n _a.license = license;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setLicense(license);\n }\n }\n static setBaseUrl(url, norecurse = false) {\n _a.baseUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setBaseUrl(url);\n }\n }\n static setApiUrl(url, norecurse = false) {\n _a.baseUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setApiUrl(url);\n }\n }\n static setProjectUrl(url, norecurse = false) {\n _a.projectUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setProjectUrl(url);\n }\n }\n static setAppUrl(url, norecurse = false) {\n _a.projectUrl = url;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setAppUrl(url);\n }\n }\n static setPathType(type, norecurse = false) {\n _a.pathType = type;\n if (!norecurse && _a.FormioClass) {\n _a.FormioClass.setPathType(type);\n }\n }\n static debug(...args) {\n if (_a.config.debug) {\n console.log(...args);\n }\n }\n static clearCache() {\n if (_a.FormioClass) {\n _a.FormioClass.clearCache();\n }\n }\n static global(prop, flag = '') {\n const globalValue = window[prop];\n if (flag && globalValue && !globalValue[flag]) {\n return null;\n }\n _a.debug(`Getting global ${prop}`, globalValue);\n return globalValue;\n }\n static use(module) {\n if (_a.FormioClass && _a.FormioClass.isRenderer) {\n _a.FormioClass.use(module);\n }\n else {\n _a.modules.push(module);\n }\n }\n static createElement(type, attrs, children) {\n const element = document.createElement(type);\n if (!attrs) {\n return element;\n }\n Object.keys(attrs).forEach((key) => {\n element.setAttribute(key, attrs[key]);\n });\n (children || []).forEach((child) => {\n element.appendChild(_a.createElement(child.tag, child.attrs, child.children));\n });\n return element;\n }\n static addScript(wrapper, src, name, flag = '') {\n return __awaiter(this, void 0, void 0, function* () {\n if (!src) {\n return Promise.resolve();\n }\n if (typeof src !== 'string' && src.length) {\n return Promise.all(src.map((ref) => _a.addScript(wrapper, ref)));\n }\n if (name && _a.global(name, flag)) {\n _a.debug(`${name} already loaded.`);\n return Promise.resolve(_a.global(name));\n }\n _a.debug('Adding Script', src);\n try {\n wrapper.appendChild(_a.createElement('script', {\n src,\n }));\n }\n catch (err) {\n _a.debug(err);\n return Promise.resolve();\n }\n if (!name) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n _a.debug(`Waiting to load ${name}`);\n const wait = setInterval(() => {\n if (_a.global(name, flag)) {\n clearInterval(wait);\n _a.debug(`${name} loaded.`);\n resolve(_a.global(name));\n }\n }, 100);\n });\n });\n }\n static addStyles(wrapper, href) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!href) {\n return;\n }\n if (typeof href !== 'string' && href.length) {\n href.forEach((ref) => _a.addStyles(wrapper, ref));\n return;\n }\n _a.debug('Adding Styles', href);\n wrapper.appendChild(_a.createElement('link', {\n rel: 'stylesheet',\n href,\n }));\n });\n }\n static submitDone(instance, submission) {\n return __awaiter(this, void 0, void 0, function* () {\n _a.debug('Submision Complete', submission);\n if (_a.config.submitDone) {\n _a.config.submitDone(submission, instance);\n }\n const successMessage = (_a.config.success || '').toString();\n if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {\n instance.element.innerHTML = `<div class=\"alert-success\" role=\"alert\">${successMessage}</div>`;\n }\n const announcementMessage = successMessage && successMessage.toLowerCase() !== 'false'\n ? successMessage\n : 'Form submission complete';\n let liveRegion = document.getElementById('formio-announcements');\n if (!liveRegion) {\n liveRegion = _a.createElement('div', {\n id: 'formio-announcements',\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n style: 'position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0);',\n });\n document.body.appendChild(liveRegion);\n }\n // Announce the submission completion using VPAT clear-and-reset technique\n liveRegion.textContent = '';\n liveRegion.setAttribute('aria-live', 'off');\n requestAnimationFrame(() => {\n setTimeout(() => {\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.textContent = announcementMessage;\n setTimeout(() => {\n if (liveRegion) {\n liveRegion.textContent = '';\n }\n }, 1000);\n }, 100);\n });\n let returnUrl = _a.config.redirect;\n // Allow form based configuration for return url.\n if (!returnUrl &&\n instance._form &&\n instance._form.settings &&\n (instance._form.settings.returnUrl || instance._form.settings.redirect)) {\n _a.debug('Return url found in form configuration');\n returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect;\n }\n if (returnUrl) {\n const formSrc = instance.formio ? instance.formio.formUrl : '';\n const hasQuery = !!returnUrl.match(/\\?/);\n const isOrigin = returnUrl.indexOf(location.origin) === 0;\n returnUrl += hasQuery ? '&' : '?';\n returnUrl += `sub=${submission._id}`;\n if (!isOrigin && formSrc) {\n returnUrl += `&form=${encodeURIComponent(formSrc)}`;\n }\n _a.debug('Return URL', returnUrl);\n window.location.href = returnUrl;\n if (isOrigin) {\n window.location.reload();\n }\n }\n });\n }\n // Return the full script if the builder is being used.\n static formioScript(script, builder) {\n builder = builder || _a.config.includeBuilder;\n if (_a.fullAdded || builder) {\n _a.fullAdded = true;\n return script.replace('formio.form', 'formio.full');\n }\n return script;\n }\n static addLibrary(libWrapper, lib, name) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!lib) {\n return;\n }\n if (lib.dependencies) {\n for (let i = 0; i < lib.dependencies.length; i++) {\n const libName = lib.dependencies[i];\n yield _a.addLibrary(libWrapper, _a.config.libs[libName], libName);\n }\n }\n if (lib.css) {\n yield _a.addStyles(lib.global ? document.body : libWrapper, lib.css);\n }\n if (lib.js) {\n const module = yield _a.addScript(lib.global ? document.body : libWrapper, lib.js, lib.use ? name : false);\n if (lib.use) {\n _a.debug(`Using ${name}`);\n const options = lib.options || {};\n if (!options.license && _a.license) {\n options.license = _a.license;\n }\n _a.use(typeof lib.use === 'function' ? lib.use(module) : module, options);\n }\n }\n if (lib.globalStyle) {\n const style = _a.createElement('style');\n style.type = 'text/css';\n style.innerHTML = lib.globalStyle;\n document.body.appendChild(style);\n }\n });\n }\n static addLoader(wrapper) {\n return __awaiter(this, void 0, void 0, function* () {\n wrapper.appendChild(_a.createElement('div', {\n class: 'formio-loader',\n }, [\n {\n tag: 'div',\n attrs: {\n class: 'loader-wrapper',\n },\n children: [\n {\n tag: 'div',\n attrs: {\n class: 'loader text-center',\n },\n },\n ],\n },\n ]));\n });\n }\n static init(element, options = {}, builder = false) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n _a.cdn = new CDN_js_1.default(_a.config.cdn, _a.config.cdnUrls || {});\n _a.config.libs = _a.config.libs || {\n uswds: {\n dependencies: ['fontawesome'],\n js: `${_a.cdn.uswds}/uswds.min.js`,\n css: `${_a.cdn.uswds}/uswds.min.css`,\n use: true,\n },\n fontawesome: {\n // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need\n // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.\n css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`,\n globalStyle: `@font-face {\n font-family: 'FontAwesome';\n src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0');\n src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');\n font-weight: normal;\n font-style: normal;\n }`,\n },\n bootstrap4: {\n dependencies: ['fontawesome'],\n css: `${_a.cdn.bootstrap4}/css/bootstrap.min.css`,\n },\n bootstrap: {\n dependencies: ['bootstrap-icons'],\n css: `${_a.cdn.bootstrap}/css/bootstrap.min.css`,\n },\n 'bootstrap-icons': {\n // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need\n // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.\n css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css',\n globalStyle: `@font-face {\n font-display: block;\n font-family: \"bootstrap-icons\";\n src: url(\"https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6\") format(\"woff2\"),\n url(\"https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6\") format(\"woff\");\n }`,\n },\n };\n // Add all bootswatch templates.\n [\n 'cerulean',\n 'cosmo',\n 'cyborg',\n 'darkly',\n 'flatly',\n 'journal',\n 'litera',\n 'lumen',\n 'lux',\n 'materia',\n 'minty',\n 'pulse',\n 'sandstone',\n 'simplex',\n 'sketchy',\n 'slate',\n 'solar',\n 'spacelab',\n 'superhero',\n 'united',\n 'yeti',\n ].forEach((template) => {\n _a.config.libs[template] = {\n dependencies: ['bootstrap-icons'],\n css: `${_a.cdn.bootswatch}/dist/${template}/bootstrap.min.css`,\n };\n });\n const id = _a.config.id || `formio-${Math.random().toString(36).substring(7)}`;\n const hasQuillComponent = (components = []) => {\n if (!Array.isArray(components)) {\n return false;\n }\n return components.some((component) => {\n var _b, _c;\n if (!component || typeof component !== 'object') {\n return false;\n }\n const isQuillTextarea = component.type === 'textarea' &&\n component.wysiwyg === true &&\n component.editor === 'quill';\n return (isQuillTextarea ||\n hasQuillComponent(component.components) ||\n hasQuillComponent((_b = component.columns) === null || _b === void 0 ? void 0 : _b.flatMap((column) => column.components || [])) ||\n hasQuillComponent((_c = component.rows) === null || _c === void 0 ? void 0 : _c.flatMap((row) => row.flatMap((cell) => cell.components || []))));\n });\n };\n const disableShadowForQuill = hasQuillComponent((_b = _a.config.form) === null || _b === void 0 ? void 0 : _b.components);\n // Create a new wrapper and add the element inside of a new wrapper.\n let wrapper = _a.createElement('div', {\n id: `${id}-wrapper`,\n });\n element.parentNode.insertBefore(wrapper, element);\n // If we include the libraries, then we will attempt to run this in shadow dom.\n const useShadowDom = _a.config.includeLibs &&\n !_a.config.noshadow &&\n !disableShadowForQuill &&\n typeof wrapper.attachShadow === 'function';\n if (useShadowDom) {\n wrapper = wrapper.attachShadow({\n mode: 'open',\n });\n options.shadowRoot = wrapper;\n // Due to an issue with quill not loading styles in the shadowdom, we need to add quill styles and js to the shadowdom\n const quill = {\n js: `${_a.cdn.quill}/quill.js`,\n css: `${_a.cdn.quill}/quill.snow.css`,\n };\n yield _a.addLibrary(wrapper, quill, 'quill');\n }\n element.parentNode.removeChild(element);\n wrapper.appendChild(element);\n // If this is inside of shadow dom, then we need to add the styles and scripts to the shadow dom.\n const libWrapper = useShadowDom ? wrapper : document.body;\n // Load the renderer styles.\n yield _a.addStyles(libWrapper, _a.config.embedCSS || `${_a.cdn.js}/formio.embed.css`);\n // Add a loader.\n _a.addLoader(wrapper);\n const formioSrc = _a.config.full ? 'formio.full' : 'formio.form';\n const renderer = _a.config.debug ? formioSrc : `${formioSrc}.min`;\n _a.FormioClass = yield _a.addScript(libWrapper, _a.formioScript(_a.config.script || `${_a.cdn.js}/${renderer}.js`, builder), 'Formio', builder ? 'isBuilder' : 'isRenderer');\n _a.FormioClass.cdn = _a.cdn;\n _a.FormioClass.setBaseUrl(options.baseUrl || _a.baseUrl || _a.config.base);\n _a.FormioClass.setProjectUrl(options.projectUrl || _a.projectUrl || _a.config.project);\n _a.FormioClass.language = _a.language;\n _a.setLicense(_a.license || _a.config.license || false);\n _a.modules.forEach((module) => {\n _a.FormioClass.use(module);\n });\n if (_a.icons) {\n _a.FormioClass.icons = _a.icons;\n }\n if (_a.pathType) {\n _a.FormioClass.setPathType(_a.pathType);\n }\n // Add libraries if they wish to include the libs.\n if (_a.config.template && _a.config.includeLibs) {\n yield _a.addLibrary(libWrapper, _a.config.libs[_a.config.template], _a.config.template);\n }\n if (!_a.config.libraries) {\n _a.config.libraries = _a.config.modules || {};\n }\n // Adding premium if it is provided via the config.\n if (_a.config.premium) {\n _a.config.libraries.premium = _a.config.premium;\n }\n // Allow adding dynamic modules.\n if (_a.config.libraries) {\n for (const name in _a.config.libraries) {\n const lib = _a.config.libraries[name];\n lib.use = lib.use || true;\n yield _a.addLibrary(libWrapper, lib, name);\n }\n }\n yield _a.addStyles(libWrapper, _a.formioScript(_a.config.style || `${_a.cdn.js}/${renderer}.css`, builder));\n if (_a.config.before) {\n yield _a.config.before(_a.FormioClass, element, _a.config);\n }\n _a.FormioClass.license = true;\n _a._formioReady(_a.FormioClass);\n return wrapper;\n });\n }\n // Called after an instance has been created.\n static afterCreate(instance, wrapper, readyEvent) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n const loader = wrapper.querySelector('.formio-loader');\n if (loader) {\n wrapper.removeChild(loader);\n }\n (_b = _a.FormioClass.events) === null || _b === void 0 ? void 0 : _b.emit(readyEvent, instance);\n if (_a.config.after) {\n _a.debug('Calling ready callback');\n _a.config.after(instance, _a.config);\n }\n return instance;\n });\n }\n // Create a new form.\n static createForm(element, form, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (_a.FormioClass) {\n return _a.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true }));\n }\n const wrapper = yield _a.init(element, options);\n return _a.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {\n // Set the default submission data.\n if (_a.config.submission) {\n _a.debug('Setting submission', _a.config.submission);\n instance.submission = _a.config.submission;\n }\n // Call the after create method.\n _a.afterCreate(instance, wrapper, 'formEmbedded');\n return instance;\n });\n });\n }\n // Create a form builder.\n static builder(element, form, options = {}) {\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n if ((_b = _a.FormioClass) === null || _b === void 0 ? void 0 : _b.builder) {\n return _a.FormioClass.builder(element, form, options);\n }\n const wrapper = yield _a.init(element, options, true);\n return _a.FormioClass.builder(element, form, options).then((instance) => {\n _a.afterCreate(instance, wrapper, 'builderEmbedded');\n return instance;\n });\n });\n }\n}\nexports.Formio = Formio;\n_a = Formio;\nFormio.FormioClass = null;\nFormio.config = {};\nFormio.modules = [];\nFormio.icons = '';\nFormio.license = '';\nFormio.formioReady = new Promise((ready, reject) => {\n _a._formioReady = ready;\n _a._formioReadyReject = reject;\n});\nFormio.version = '5.4.3';\n// Create a report.\nFormio.Report = {\n create: (element, submission, options = {}) => __awaiter(void 0, void 0, void 0, function* () {\n var _b;\n if ((_b = _a.FormioClass) === null || _b === void 0 ? void 0 : _b.Report) {\n return _a.FormioClass.Report.create(element, submission, options);\n }\n const wrapper = yield _a.init(element, options, true);\n return _a.FormioClass.Report.create(element, submission, options).then((instance) => {\n _a.afterCreate(instance, wrapper, 'reportEmbedded');\n return instance;\n });\n }),\n};\nCDN_js_1.default.defaultCDN = Formio.version.includes('rc') ? 'https://cdn.test-form.io' : 'https://cdn.form.io';\nclass Form {\n constructor(element, form, options) {\n this.form = form;\n this.element = element;\n this.options = options || {};\n this.init();\n this.instance = {\n proxy: true,\n ready: this.ready,\n destroy: () => { },\n };\n }\n init() {\n if (this.instance && !this.instance.proxy) {\n this.instance.destroy();\n }\n this.element.innerHTML = '';\n this.ready = this.create().then((instance) => {\n this.instance = instance;\n this.form = instance.form;\n return instance;\n });\n }\n create() {\n return Formio.createForm(this.element, this.form, this.options);\n }\n setForm(form) {\n this.form = form;\n if (this.instance) {\n this.instance.setForm(form);\n }\n }\n setDisplay(display) {\n if (this.instance.proxy) {\n return this.ready;\n }\n this.form.display = display;\n this.instance.destroy();\n this.ready = this.create().then((instance) => {\n this.instance = instance;\n this.setForm(this.form);\n });\n return this.ready;\n }\n}\nexports.Form = Form;\nclass FormBuilder extends Form {\n create() {\n return Formio.builder(this.element, this.form, this.options);\n }\n}\nexports.FormBuilder = FormBuilder;\nFormio.Form = Form;\nFormio.FormBuilder = FormBuilder;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/Embed.js?\n}");
|
|
3670
3670
|
|
|
3671
3671
|
/***/ }),
|
|
3672
3672
|
|
|
@@ -3677,7 +3677,7 @@ eval("{\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _argumen
|
|
|
3677
3677
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3678
3678
|
|
|
3679
3679
|
"use strict";
|
|
3680
|
-
eval("{\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Formio = void 0;\nconst sdk_1 = __webpack_require__(/*! @formio/core/sdk */ \"../core/lib/sdk/index.js\");\nObject.defineProperty(exports, \"Formio\", ({ enumerable: true, get: function () { return sdk_1.Formio; } }));\nconst Embed_1 = __webpack_require__(/*! ./Embed */ \"./lib/cjs/Embed.js\");\nconst CDN_1 = __importDefault(__webpack_require__(/*! ./CDN */ \"./lib/cjs/CDN.js\"));\nconst providers_1 = __importDefault(__webpack_require__(/*! ./providers */ \"./lib/cjs/providers/index.js\"));\nsdk_1.Formio.cdn = new CDN_1.default();\nsdk_1.Formio.Providers = providers_1.default;\nsdk_1.Formio.version = '5.4.
|
|
3680
|
+
eval("{\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Formio = void 0;\nconst sdk_1 = __webpack_require__(/*! @formio/core/sdk */ \"../core/lib/sdk/index.js\");\nObject.defineProperty(exports, \"Formio\", ({ enumerable: true, get: function () { return sdk_1.Formio; } }));\nconst Embed_1 = __webpack_require__(/*! ./Embed */ \"./lib/cjs/Embed.js\");\nconst CDN_1 = __importDefault(__webpack_require__(/*! ./CDN */ \"./lib/cjs/CDN.js\"));\nconst providers_1 = __importDefault(__webpack_require__(/*! ./providers */ \"./lib/cjs/providers/index.js\"));\nsdk_1.Formio.cdn = new CDN_1.default();\nsdk_1.Formio.Providers = providers_1.default;\nsdk_1.Formio.version = '5.4.3';\nCDN_1.default.defaultCDN = sdk_1.Formio.version.includes('rc')\n ? 'https://cdn.test-form.io'\n : 'https://cdn.form.io';\nconst isNil = (val) => val === null || val === undefined;\nsdk_1.Formio.prototype.uploadFile = function (storage, file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, uploadStartCallback, abortCallback, multipartOptions) {\n const requestArgs = {\n provider: storage,\n method: 'upload',\n file: file,\n fileName: fileName,\n dir: dir,\n };\n fileKey = fileKey || 'file';\n const request = sdk_1.Formio.pluginWait('preRequest', requestArgs).then(() => {\n return sdk_1.Formio.pluginGet('fileRequest', requestArgs).then((result) => {\n if (storage && isNil(result)) {\n const Provider = providers_1.default.getProvider('storage', storage);\n if (Provider) {\n const provider = new Provider(this);\n if (uploadStartCallback) {\n uploadStartCallback();\n }\n return provider.uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback, multipartOptions);\n }\n else {\n throw 'Storage provider not found';\n }\n }\n return result || { url: '' };\n });\n });\n return sdk_1.Formio.pluginAlter('wrapFileRequestPromise', request, requestArgs);\n};\nsdk_1.Formio.prototype.downloadFile = function (file, options) {\n const requestArgs = {\n method: 'download',\n file: file,\n };\n const request = sdk_1.Formio.pluginWait('preRequest', requestArgs).then(() => {\n return sdk_1.Formio.pluginGet('fileRequest', requestArgs).then((result) => {\n if (file.storage && isNil(result)) {\n const Provider = providers_1.default.getProvider('storage', file.storage);\n if (Provider) {\n const provider = new Provider(this);\n return provider.downloadFile(file, options);\n }\n else {\n throw 'Storage provider not found';\n }\n }\n return result || { url: '' };\n });\n });\n return sdk_1.Formio.pluginAlter('wrapFileRequestPromise', request, requestArgs);\n};\nsdk_1.Formio.prototype.deleteFile = function (file, options) {\n const requestArgs = {\n method: 'delete',\n file: file,\n };\n const request = sdk_1.Formio.pluginWait('preRequest', requestArgs).then(() => {\n return sdk_1.Formio.pluginGet('fileRequest', requestArgs).then((result) => {\n if (file.storage && isNil(result)) {\n const Provider = providers_1.default.getProvider('storage', file.storage);\n if (Provider) {\n const provider = new Provider(this);\n return provider.deleteFile(file, options);\n }\n else {\n throw 'Storage provider not found';\n }\n }\n return result || { url: '' };\n });\n });\n return sdk_1.Formio.pluginAlter('wrapFileRequestPromise', request, requestArgs);\n};\n// Esnure we proxy the following methods to the FormioEmbed class.\n['setBaseUrl', 'setApiUrl', 'setAppUrl', 'setProjectUrl', 'setPathType', 'setLicense'].forEach((fn) => {\n const baseFn = sdk_1.Formio[fn];\n sdk_1.Formio[fn] = function (arg) {\n const retVal = Embed_1.Formio[fn](arg, true);\n return baseFn ? baseFn.call(this, arg) : retVal;\n };\n});\n// For reverse compatability.\nsdk_1.Formio.Promise = Promise;\nsdk_1.Formio.formioReady = Embed_1.Formio.formioReady;\nsdk_1.Formio.config = Embed_1.Formio.config;\nsdk_1.Formio.builder = Embed_1.Formio.builder;\nsdk_1.Formio.Report = Embed_1.Formio.Report;\nsdk_1.Formio.Form = Embed_1.Formio.Form;\nsdk_1.Formio.FormBuilder = Embed_1.Formio.FormBuilder;\nsdk_1.Formio.use = Embed_1.Formio.use;\nsdk_1.Formio.createForm = Embed_1.Formio.createForm;\nsdk_1.Formio.submitDone = Embed_1.Formio.submitDone;\nsdk_1.Formio.addLibrary = Embed_1.Formio.addLibrary;\nsdk_1.Formio.addLoader = Embed_1.Formio.addLoader;\nsdk_1.Formio.addToGlobal = (global) => {\n if (typeof global === 'object' && !global.Formio) {\n global.Formio = sdk_1.Formio;\n }\n};\nif (typeof globalThis !== 'undefined') {\n sdk_1.Formio.addToGlobal(globalThis);\n}\nif (typeof window !== 'undefined') {\n sdk_1.Formio.addToGlobal(window);\n}\nEmbed_1.Formio._formioReady(sdk_1.Formio);\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/Formio.js?\n}");
|
|
3681
3681
|
|
|
3682
3682
|
/***/ }),
|
|
3683
3683
|
|
|
@@ -3831,7 +3831,7 @@ eval("{\nvar __importDefault = (this && this.__importDefault) || function (mod)
|
|
|
3831
3831
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3832
3832
|
|
|
3833
3833
|
"use strict";
|
|
3834
|
-
eval("{\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst uuid_1 = __webpack_require__(/*! uuid */ \"../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/index.js\");\n/**\n * indexedDb provider for file storage.\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction indexeddb() {\n return {\n title: 'indexedDB',\n name: 'indexeddb',\n uploadFile(file, fileName, dir, progressCallback, url, options) {\n if (!('indexedDB' in window)) {\n console.log(\"This browser doesn't support IndexedDB\");\n return;\n }\n return new Promise((resolve) => {\n const request = indexedDB.open(options.indexeddb);\n request.onsuccess = function (event) {\n const db = event.target.result;\n resolve(db);\n };\n request.onupgradeneeded = function (e) {\n const db = e.target.result;\n db.createObjectStore(options.indexeddbTable);\n };\n }).then((db) => {\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onload = () => {\n const blobObject = new Blob([file], { type: file.type });\n const id = (0, uuid_1.v4)(blobObject);\n const data = {\n id,\n data: blobObject,\n name: file.name,\n size: file.size,\n type: file.type,\n url,\n };\n const trans = db.transaction([options.indexeddbTable], 'readwrite');\n const addReq = trans.objectStore(options.indexeddbTable).put(data, id);\n addReq.onerror = function (e) {\n console.log('error storing data');\n console.error(e);\n };\n trans.oncomplete = function () {\n resolve({\n storage: 'indexeddb',\n name: file.name,\n size: file.size,\n type: file.type,\n url: url,\n id,\n });\n };\n };\n reader.onerror = () => {\n return reject(this);\n };\n reader.readAsDataURL(file);\n });\n });\n },\n downloadFile(file, options) {\n return new Promise((resolve) => {\n const request = indexedDB.open(
|
|
3834
|
+
eval("{\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst uuid_1 = __webpack_require__(/*! uuid */ \"../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/index.js\");\n/**\n * indexedDb provider for file storage.\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction indexeddb() {\n return {\n title: 'indexedDB',\n name: 'indexeddb',\n uploadFile(file, fileName, dir, progressCallback, url, options) {\n if (!('indexedDB' in window)) {\n console.log(\"This browser doesn't support IndexedDB\");\n return;\n }\n return new Promise((resolve) => {\n const request = indexedDB.open(options.indexeddb);\n request.onsuccess = function (event) {\n const db = event.target.result;\n resolve(db);\n };\n request.onupgradeneeded = function (e) {\n const db = e.target.result;\n db.createObjectStore(options.indexeddbTable);\n };\n }).then((db) => {\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onload = () => {\n const blobObject = new Blob([file], { type: file.type });\n const id = (0, uuid_1.v4)(blobObject);\n const data = {\n id,\n data: blobObject,\n name: file.name,\n size: file.size,\n type: file.type,\n url,\n };\n const trans = db.transaction([options.indexeddbTable], 'readwrite');\n const addReq = trans.objectStore(options.indexeddbTable).put(data, id);\n addReq.onerror = function (e) {\n console.log('error storing data');\n console.error(e);\n };\n trans.oncomplete = function () {\n resolve({\n storage: 'indexeddb',\n name: file.name,\n size: file.size,\n type: file.type,\n url: url,\n id,\n });\n };\n };\n reader.onerror = () => {\n return reject(this);\n };\n reader.readAsDataURL(file);\n });\n });\n },\n downloadFile(file, options) {\n const opts = (options === null || options === void 0 ? void 0 : options.options) || options || {};\n const dbName = opts.indexeddb;\n const tableName = opts.indexeddbTable;\n if (!dbName || !tableName) {\n return Promise.reject(new Error('IndexedDB storage options (indexeddb, indexeddbTable) are required for download'));\n }\n return new Promise((resolve) => {\n const request = indexedDB.open(dbName);\n request.onsuccess = function (event) {\n const db = event.target.result;\n resolve(db);\n };\n }).then((db) => {\n return new Promise((resolve, reject) => {\n const trans = db.transaction(tableName, 'readonly');\n const store = trans.objectStore(tableName).get(file.id);\n store.onsuccess = () => {\n trans.oncomplete = () => {\n const result = store.result;\n if (!result || !result.data) {\n return reject(new Error('File not found in IndexedDB'));\n }\n const dbFile = new File([result.data], file.name, {\n type: result.type,\n });\n const reader = new FileReader();\n reader.onload = (event) => {\n result.url = event.target.result;\n result.storage = file.storage;\n resolve(result);\n };\n reader.onerror = () => {\n return reject(this);\n };\n reader.readAsDataURL(dbFile);\n };\n };\n store.onerror = () => {\n return reject(this);\n };\n });\n });\n },\n deleteFile(file, options) {\n return new Promise((resolve) => {\n const request = indexedDB.open(options.indexeddb);\n request.onsuccess = function (event) {\n const db = event.target.result;\n resolve(db);\n };\n }).then((db) => {\n return new Promise((resolve, reject) => {\n const trans = db.transaction([options.indexeddbTable], 'readwrite');\n const store = trans.objectStore(options.indexeddbTable).delete(file.id);\n store.onsuccess = () => {\n trans.oncomplete = () => {\n const result = store.result;\n resolve(result);\n };\n };\n store.onerror = () => {\n return reject(this);\n };\n });\n });\n },\n };\n}\nindexeddb.title = 'IndexedDB';\nexports[\"default\"] = indexeddb;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/indexeddb.js?\n}");
|
|
3835
3835
|
|
|
3836
3836
|
/***/ }),
|
|
3837
3837
|
|
|
@@ -3853,7 +3853,7 @@ eval("{\nvar __createBinding = (this && this.__createBinding) || (Object.create
|
|
|
3853
3853
|
/***/ (function(__unused_webpack_module, exports) {
|
|
3854
3854
|
|
|
3855
3855
|
"use strict";
|
|
3856
|
-
eval("{\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n *\n * @param {object} formio - formio instance\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction url(formio) {\n /**\n *\n * @param {object} options - options to set on the xhr\n * @param {object} xhr - the xhr object\n */\n function setOptions(options, xhr) {\n const parsedOptions = typeof options === 'string' ? JSON.parse(options) : options;\n for (const prop in parsedOptions) {\n if (prop === 'headers') {\n const headers = parsedOptions['headers'];\n for (const header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n else {\n xhr[prop] = parsedOptions[prop];\n }\n }\n }\n const xhrRequest = (url, name, query, data, options, progressCallback, abortCallback) => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const json = typeof data === 'string';\n const fd = new FormData();\n if (typeof progressCallback === 'function') {\n xhr.upload.onprogress = progressCallback;\n }\n if (typeof abortCallback === 'function') {\n abortCallback(() => xhr.abort());\n }\n if (!json) {\n for (const key in data) {\n fd.append(key, data[key]);\n }\n }\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n // Need to test if xhr.response is decoded or not.\n let respData = {};\n try {\n respData = typeof xhr.response === 'string' ? JSON.parse(xhr.response) : {};\n respData = respData && respData.data ? respData.data : respData;\n }\n catch (ignoreErr) {\n respData = {};\n }\n // Get the url of the file.\n let respUrl = respData.hasOwnProperty('url')\n ? respData.url\n : `${xhr.responseURL}/${name}`;\n // If they provide relative url, then prepend the url.\n if (respUrl && respUrl[0] === '/') {\n respUrl = `${url}${respUrl}`;\n }\n resolve({ url: respUrl, data: respData });\n }\n else {\n reject(xhr.response || 'Unable to upload file');\n }\n };\n xhr.onerror = () => reject(xhr);\n xhr.onabort = () => reject(xhr);\n let requestUrl = url + (url.indexOf('?') > -1 ? '&' : '?');\n for (const key in query) {\n requestUrl += `${key}=${query[key]}&`;\n }\n if (requestUrl[requestUrl.length - 1] === '&') {\n requestUrl = requestUrl.substr(0, requestUrl.length - 1);\n }\n xhr.open('POST', requestUrl);\n if (json) {\n xhr.setRequestHeader('Content-Type', 'application/json');\n }\n const token = formio.getToken();\n if (token) {\n xhr.setRequestHeader('x-jwt-token', token);\n }\n //Overrides previous request props\n if (options) {\n setOptions(options, xhr);\n }\n xhr.send(json ? data : fd);\n });\n };\n return {\n title: 'Url',\n name: 'url',\n uploadFile(file, name, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) {\n const uploadRequest = function (form) {\n return xhrRequest(url, name, {\n baseUrl: encodeURIComponent(formio.projectUrl),\n project: form ? form.project : '',\n form: form ? form._id : '',\n }, {\n [fileKey]: file,\n name,\n dir,\n }, options, progressCallback, abortCallback).then((response) => {\n // Store the project and form url along with the metadata.\n response.data = response.data || {};\n response.data.baseUrl = formio.projectUrl;\n response.data.project = form ? form.project : '';\n response.data.form = form ? form._id : '';\n return {\n storage: 'url',\n name,\n url: response.url,\n size: file.size,\n type: file.type,\n data: response.data,\n };\n });\n };\n if (file.private && formio.formId) {\n return formio.loadForm().then((form) => uploadRequest(form));\n }\n else {\n return uploadRequest();\n }\n },\n deleteFile(fileInfo, options) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('DELETE', fileInfo.url, true);\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve('File deleted');\n }\n else {\n reject(xhr.response || 'Unable to delete file');\n }\n };\n if (options) {\n setOptions(options, xhr);\n }\n xhr.send(null);\n });\n },\n downloadFile(file) {\n if (file.private) {\n if (formio.submissionId && file.data) {\n file.data.submission = formio.submissionId;\n }\n return xhrRequest(file.url, file.name, {}, JSON.stringify(file)).then((response) => response.data);\n }\n // Return the original as there is nothing to do.\n return Promise.resolve(file);\n },\n };\n}\nurl.title = 'Url';\nexports[\"default\"] = url;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/url.js?\n}");
|
|
3856
|
+
eval("{\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n *\n * @param {object} formio - formio instance\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction url(formio) {\n /**\n *\n * @param {object} options - options to set on the xhr\n * @param {object} xhr - the xhr object\n */\n function setOptions(options, xhr) {\n const parsedOptions = typeof options === 'string' ? JSON.parse(options) : options;\n for (const prop in parsedOptions) {\n if (prop === 'headers') {\n const headers = parsedOptions['headers'];\n for (const header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n else {\n xhr[prop] = parsedOptions[prop];\n }\n }\n }\n const xhrRequest = (url, name, query, data, options, progressCallback, abortCallback) => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const json = typeof data === 'string';\n const fd = new FormData();\n if (typeof progressCallback === 'function') {\n xhr.upload.onprogress = progressCallback;\n }\n if (typeof abortCallback === 'function') {\n abortCallback(() => xhr.abort());\n }\n if (!json) {\n for (const key in data) {\n fd.append(key, data[key]);\n }\n }\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n // Need to test if xhr.response is decoded or not.\n let respData = {};\n try {\n respData = typeof xhr.response === 'string' ? JSON.parse(xhr.response) : {};\n respData = respData && respData.data ? respData.data : respData;\n }\n catch (ignoreErr) {\n respData = {};\n }\n // Get the url of the file.\n let respUrl = respData.hasOwnProperty('url')\n ? respData.url\n : `${xhr.responseURL}/${name}`;\n // If they provide relative url, then prepend the url.\n if (respUrl && respUrl[0] === '/') {\n respUrl = `${url}${respUrl}`;\n }\n resolve({ url: respUrl, data: respData });\n }\n else {\n reject(xhr.response || 'Unable to upload file');\n }\n };\n xhr.onerror = () => {\n xhr.message =\n xhr.status >= 400\n ? `${xhr.status} ${xhr.statusText || ''}`.trim()\n : xhr.statusText && xhr.statusText.trim()\n ? xhr.statusText.trim()\n : 'Unable to upload file';\n return reject(xhr);\n };\n xhr.onabort = () => {\n xhr.type = 'abort';\n return reject(xhr);\n };\n let requestUrl = url + (url.indexOf('?') > -1 ? '&' : '?');\n for (const key in query) {\n requestUrl += `${key}=${query[key]}&`;\n }\n if (requestUrl[requestUrl.length - 1] === '&') {\n requestUrl = requestUrl.substr(0, requestUrl.length - 1);\n }\n xhr.open('POST', requestUrl);\n if (json) {\n xhr.setRequestHeader('Content-Type', 'application/json');\n }\n const token = formio.getToken();\n if (token) {\n xhr.setRequestHeader('x-jwt-token', token);\n }\n //Overrides previous request props\n if (options) {\n setOptions(options, xhr);\n }\n xhr.send(json ? data : fd);\n });\n };\n return {\n title: 'Url',\n name: 'url',\n uploadFile(file, name, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) {\n const uploadRequest = function (form) {\n return xhrRequest(url, name, {\n baseUrl: encodeURIComponent(formio.projectUrl),\n project: form ? form.project : '',\n form: form ? form._id : '',\n }, {\n [fileKey]: file,\n name,\n dir,\n }, options, progressCallback, abortCallback).then((response) => {\n // Store the project and form url along with the metadata.\n response.data = response.data || {};\n response.data.baseUrl = formio.projectUrl;\n response.data.project = form ? form.project : '';\n response.data.form = form ? form._id : '';\n return {\n storage: 'url',\n name,\n url: response.url,\n size: file.size,\n type: file.type,\n data: response.data,\n };\n });\n };\n if (file.private && formio.formId) {\n return formio.loadForm().then((form) => uploadRequest(form));\n }\n else {\n return uploadRequest();\n }\n },\n deleteFile(fileInfo, options) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('DELETE', fileInfo.url, true);\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve('File deleted');\n }\n else {\n reject(xhr.response || 'Unable to delete file');\n }\n };\n if (options) {\n setOptions(options, xhr);\n }\n xhr.send(null);\n });\n },\n downloadFile(file) {\n if (file.private) {\n if (formio.submissionId && file.data) {\n file.data.submission = formio.submissionId;\n }\n return xhrRequest(file.url, file.name, {}, JSON.stringify(file)).then((response) => response.data);\n }\n // Return the original as there is nothing to do.\n return Promise.resolve(file);\n },\n };\n}\nurl.title = 'Url';\nexports[\"default\"] = url;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/url.js?\n}");
|
|
3857
3857
|
|
|
3858
3858
|
/***/ }),
|
|
3859
3859
|
|
|
@@ -3875,7 +3875,7 @@ eval("{\n/**\n * @typedef {any[]} Args\n */\nvar __awaiter = (this && this.__awa
|
|
|
3875
3875
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3876
3876
|
|
|
3877
3877
|
"use strict";
|
|
3878
|
-
eval("{\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setXhrHeaders = void 0;\nconst trim_1 = __importDefault(__webpack_require__(/*! lodash/trim */ \"../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/trim.js\"));\nconst setXhrHeaders = (formio, xhr) => {\n const { headers } = formio.options;\n if (headers) {\n const ValidHeaders = {\n 'Content-Disposition': true,\n Authorization: true,\n };\n for (const header in headers) {\n if (ValidHeaders[header]) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n};\nexports.setXhrHeaders = setXhrHeaders;\nconst XHR = {\n trim(text) {\n return (0, trim_1.default)(text, '/');\n },\n path(items) {\n return items\n .filter((item) => !!item)\n .map(XHR.trim)\n .join('/');\n },\n upload(formio, type, xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n // Use makeRequest so portal plugins (e.g. x-remote-token) are applied
|
|
3878
|
+
eval("{\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setXhrHeaders = void 0;\nconst trim_1 = __importDefault(__webpack_require__(/*! lodash/trim */ \"../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/trim.js\"));\nconst setXhrHeaders = (formio, xhr) => {\n const { headers } = formio.options;\n if (headers) {\n const ValidHeaders = {\n 'Content-Disposition': true,\n Authorization: true,\n };\n for (const header in headers) {\n if (ValidHeaders[header]) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n};\nexports.setXhrHeaders = setXhrHeaders;\nconst XHR = {\n trim(text) {\n return (0, trim_1.default)(text, '/');\n },\n path(items) {\n return items\n .filter((item) => !!item)\n .map(XHR.trim)\n .join('/');\n },\n upload(formio, type, xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n // Use makeRequest so portal plugins (e.g. x-remote-token) are applied. GOTCHA(G-FJS05)\n let serverResponse;\n try {\n serverResponse = yield formio.makeRequest('file', `${formio.formUrl}/storage/${type}`, 'POST', {\n name: XHR.path([dir, fileName]),\n size: file.size,\n type: file.type,\n groupPermissions,\n groupId,\n multipart: multipartOptions,\n });\n }\n catch (err) {\n if (err === null || err === void 0 ? void 0 : err.networkError) {\n throw err;\n }\n if (err instanceof Error) {\n throw err;\n }\n const message = typeof err === 'string' ? err : (err === null || err === void 0 ? void 0 : err.message) || (err === null || err === void 0 ? void 0 : err.error);\n const error = new Error(message || 'Unable to sign file.');\n if ((err === null || err === void 0 ? void 0 : err.status) === 504) {\n error.networkError = true;\n }\n throw error;\n }\n return yield XHR.makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback);\n });\n },\n makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback) {\n return new Promise((resolve, reject) => {\n // Send the file with data.\n const xhr = new XMLHttpRequest();\n xhr.openAndSetHeaders = (...params) => {\n xhr.open(...params);\n (0, exports.setXhrHeaders)(formio, xhr);\n };\n Promise.resolve(xhrCallback(xhr, serverResponse, abortCallback))\n .then((payload) => {\n // if payload is nullish we can assume the provider took care of the entire upload process\n if (!payload) {\n return resolve(serverResponse);\n }\n // Fire on network error.\n xhr.onerror = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Fire on network abort.\n xhr.onabort = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Set the onabort error callback.\n xhr.onabort = reject;\n if (typeof progressCallback === 'function') {\n xhr.upload.onprogress = progressCallback;\n }\n if (typeof abortCallback === 'function') {\n abortCallback(() => xhr.abort());\n }\n // Fired when the response has made it back from the server.\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(serverResponse);\n }\n else if (xhr.status === 504) {\n const error = new Error('Network request failed');\n error.networkError = true;\n reject(error);\n }\n else {\n reject(xhr.response || 'Unable to upload file');\n }\n };\n // Get the request and send it to the server.\n xhr.send(payload);\n })\n .catch(reject);\n });\n },\n};\nexports[\"default\"] = XHR;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/xhr.js?\n}");
|
|
3879
3879
|
|
|
3880
3880
|
/***/ })
|
|
3881
3881
|
|