@tsed/react-formio 3.0.0-rc.2 → 3.0.0-rc.4

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.
@@ -0,0 +1,4 @@
1
+ export type JSON = unknown | string | number | boolean | null | undefined | JSON[] | {
2
+ [key: string]: JSON;
3
+ };
4
+ export type JSONRecord = Record<string, JSON>;
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=JSONRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONRecord.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,17 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
  import { OperationButtonProps } from '../molecules/table/components/DefaultOperationButton.js';
3
- import { JSON } from './SubmissionType.js';
3
+ import { JSONRecord } from './JSONRecord.js';
4
4
  export type CellMetadata = Record<string, unknown>;
5
- export type PermissionsResolver<Data extends {
6
- [key: string]: JSON;
7
- } = {
8
- [key: string]: JSON;
9
- }> = (data: Data, metadata: CellMetadata, operation: Operation<Data>) => void;
10
- export interface Operation<Data extends {
11
- [key: string]: JSON;
12
- } = {
13
- [key: string]: JSON;
14
- }> {
5
+ export type PermissionsResolver<Data extends JSONRecord = JSONRecord> = (data: Data, metadata: CellMetadata, operation: Operation<Data>) => void;
6
+ export interface Operation<Data extends JSONRecord = JSONRecord> {
15
7
  /**
16
8
  * Action identifier
17
9
  */
@@ -1,19 +1,9 @@
1
1
  import { Component, Submission } from '@formio/core';
2
- export type JSON = unknown | string | number | boolean | null | undefined | JSON[] | {
3
- [key: string]: JSON;
4
- };
5
- export type SubmissionType<Data extends {
6
- [key: string]: JSON;
7
- } = {
8
- [key: string]: JSON;
9
- }> = Omit<Partial<Submission>, "data"> & {
2
+ import { JSONRecord } from './JSONRecord.js';
3
+ export type SubmissionType<Data extends JSONRecord = JSONRecord> = Omit<Partial<Submission>, "data"> & {
10
4
  data: Data;
11
5
  };
12
- export interface ChangedSubmission<Data extends {
13
- [key: string]: JSON;
14
- } = {
15
- [key: string]: JSON;
16
- }> extends SubmissionType<Data> {
6
+ export interface ChangedSubmission<Data extends JSONRecord = JSONRecord> extends SubmissionType<Data> {
17
7
  data: Data;
18
8
  changed?: {
19
9
  component: Component;
@@ -1,9 +1,5 @@
1
- import { ComponentType, JSON, SubmissionType } from '../../interfaces';
2
- export interface FormPageChangeProps<Data extends {
3
- [key: string]: JSON;
4
- } = {
5
- [key: string]: JSON;
6
- }> {
1
+ import { ComponentType, JSONRecord, SubmissionType } from '../../interfaces';
2
+ export interface FormPageChangeProps<Data extends JSONRecord = JSONRecord> {
7
3
  page: number;
8
4
  submission: SubmissionType<Data>;
9
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Form } from '@formio/js';
2
2
  import { MutableRefObject } from 'react';
3
- import { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, SubmissionType } from '../../interfaces';
3
+ import { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, JSONRecord, SubmissionType } from '../../interfaces';
4
4
  import { FormCustomEvent } from './types';
5
5
  type Webform = any;
6
6
  type EventError = string | Error | Error[] | {
@@ -8,11 +8,7 @@ type EventError = string | Error | Error[] | {
8
8
  } | {
9
9
  message: string;
10
10
  }[];
11
- export interface UseFormProps<Data extends {
12
- [key: string]: JSON;
13
- } = {
14
- [key: string]: JSON;
15
- }> {
11
+ export interface UseFormProps<Data extends JSONRecord = JSONRecord> {
16
12
  src?: string;
17
13
  url?: string;
18
14
  form?: FormType;
@@ -55,11 +51,7 @@ export interface UseFormProps<Data extends {
55
51
  [event: string]: (...args: any[]) => void;
56
52
  };
57
53
  }
58
- export declare function useForm<Data extends {
59
- [key: string]: JSON;
60
- } = {
61
- [key: string]: JSON;
62
- }>(props: UseFormProps<Data>): {
54
+ export declare function useForm<Data extends JSONRecord = JSONRecord>(props: UseFormProps<Data>): {
63
55
  element: MutableRefObject<HTMLDivElement | null>;
64
56
  instance: any;
65
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","sources":["../../../../../node_modules/eventemitter2/lib/eventemitter2.js","../../../src/organisms/form/useForm.ts"],"sourcesContent":["/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import { Form } from \"@formio/js\";\nimport { EventEmitter2 } from \"eventemitter2\";\nimport { type MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nimport type { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, SubmissionType } from \"../../interfaces\";\nimport { FormCustomEvent } from \"./types\";\n\ntype Webform = any;\ntype EventError = string | Error | Error[] | { message: string } | { message: string }[];\n\nexport interface UseFormProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }> {\n src?: string;\n url?: string;\n form?: FormType;\n submission?: SubmissionType<Data>;\n options?: FormOptions;\n FormClass?: typeof Form;\n onFormReady?: (instance: Webform) => void;\n onPrevPage?: (page: number, submission: SubmissionType<Data>) => void;\n onNextPage?: (page: number, submission: SubmissionType<Data>) => void;\n onCancelSubmit?: () => void;\n onCancelComponent?: (component: ComponentType) => void;\n onChange?: (value: ChangedSubmission<Data>, flags: any, modified: boolean) => void;\n onCustomEvent?: (event: FormCustomEvent) => void;\n onComponentChange?: (changed: { instance: Webform; component: Webform; value: any; flags: any }) => void;\n onSubmit?: (submission: SubmissionType<Data>, saved?: boolean) => void;\n onAsyncSubmit?: (submission: SubmissionType<Data>) => void;\n onSubmitDone?: (submission: SubmissionType<Data>) => void;\n onSubmitError?: (error: EventError) => void;\n onFormLoad?: (form: JSON) => void;\n onError?: (error: EventError | false) => void;\n onRender?: (param: any) => void;\n onAttach?: (param: any) => void;\n onBuild?: (param: any) => void;\n onFocus?: (instance: Webform) => void;\n onBlur?: (instance: Webform) => void;\n onInitialized?: () => void;\n onLanguageChanged?: () => void;\n onBeforeSetSubmission?: (submission: SubmissionType<Data>) => void;\n onSaveDraftBegin?: () => void;\n onSaveDraft?: (submission: SubmissionType<Data>) => void;\n onRestoreDraft?: (submission: SubmissionType<Data> | null) => void;\n onSubmissionDeleted?: (submission: SubmissionType<Data>) => void;\n onRequestDone?: () => void;\n otherEvents?: {\n [event: string]: (...args: any[]) => void;\n };\n}\n\nconst getDefaultEmitter = () => {\n return new EventEmitter2({\n wildcard: false,\n maxListeners: 0\n });\n};\n\nfunction onAnyEvent<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(\n handlers: Omit<UseFormProps<Data>, \"src\" | \"url\" | \"form\" | \"submission\" | \"options\" | \"formReady\" | \"formioform\" | \"Formio\">,\n ...args: [string, ...any[]]\n) {\n const [event, ...outputArgs] = args;\n\n if (event.startsWith(\"formio.\")) {\n const funcName = `on${event.charAt(7).toUpperCase()}${event.slice(8)}`;\n\n if (funcName in handlers) {\n (handlers as any)[funcName](...outputArgs);\n }\n }\n if (handlers.otherEvents && handlers.otherEvents[event]) {\n handlers.otherEvents[event](...outputArgs);\n }\n}\n\nconst createWebformInstance = async (\n FormConstructor: any | undefined,\n formSource: any,\n element: HTMLDivElement,\n options: FormOptions = {}\n) => {\n if (!options?.events) {\n options.events = getDefaultEmitter();\n }\n\n if (typeof formSource !== \"string\") {\n formSource = structuredClone(formSource);\n }\n\n const promise = new FormConstructor(element, formSource, options);\n const webform = await promise.ready;\n\n webform.toJSON = () => ({ __WEBFORM__: true });\n\n return webform;\n};\n\n// Define effective props (aka I want to rename these props but also maintain backwards compatibility)\nfunction getEffectiveProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(props: UseFormProps<Data>) {\n const { FormClass = Form, form, src, url, options, submission, onFormReady, onAsyncSubmit, ...handlers } = props;\n\n return {\n FormClass,\n formSource: form !== undefined ? form : src,\n handlers,\n options,\n url,\n submission,\n onFormReady,\n onAsyncSubmit\n };\n}\n\nfunction createCustomValidation(customAction: any, ref: MutableRefObject<Webform | null>) {\n return async (submission: SubmissionType, next: (error: null | Error) => void) => {\n try {\n const updatedSubmission = await customAction(submission);\n\n next(null);\n\n ref.current.onSubmit(updatedSubmission, true);\n } catch (er: any) {\n next(er.errors || er);\n } finally {\n ref.current.submissionInProcess = false;\n }\n };\n}\n\nexport function useForm<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(props: UseFormProps<Data>) {\n const webformRef = useRef<Webform | null>(null);\n const renderElement = useRef<HTMLDivElement | null>(null);\n const { formSource, FormClass, options, url, submission, handlers, onFormReady, onAsyncSubmit } = getEffectiveProps(props);\n\n const [instanceIsReady, setInstanceIsReady] = useState(false);\n\n useEffect(() => {\n let ignore = false;\n const createInstance = async () => {\n if (renderElement.current === null) {\n console.warn(\"Form element not found\");\n return;\n }\n\n if (typeof formSource === \"undefined\") {\n console.warn(\"Form source not found\");\n return;\n }\n\n let opts = options || {};\n\n if (onAsyncSubmit) {\n opts.hooks = opts.hooks || {};\n opts.hooks.customValidation = createCustomValidation(props.onAsyncSubmit, webformRef);\n }\n\n const webform = await createWebformInstance(FormClass, formSource, renderElement.current, options);\n\n if (webform) {\n if (ignore) {\n webform.destroy(true);\n return;\n }\n\n if (typeof formSource === \"string\") {\n webform.src = formSource;\n } else if (typeof formSource === \"object\") {\n if (submission) {\n webform.setSubmission(submission);\n }\n\n if (url) {\n webform.url = url;\n }\n }\n\n if (onFormReady) {\n onFormReady(webform);\n }\n\n renderElement.current.className = \"formio-form-ready\";\n webformRef.current = webform;\n setInstanceIsReady(true);\n } else {\n console.warn(\"Failed to create form instance\");\n }\n };\n\n createInstance();\n\n return () => {\n ignore = true;\n if (webformRef.current) {\n webformRef.current.destroy(true);\n }\n };\n }, [formSource, url]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.onAny((...args: [string, ...any[]]) => {\n instanceIsReady && onAnyEvent(handlers, ...args);\n });\n }\n\n return () => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.offAny((...args: [string, ...any[]]) => onAnyEvent(handlers, ...args));\n }\n };\n }, [instanceIsReady, handlers]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && submission) {\n webformRef.current.setSubmission(submission);\n }\n }, [instanceIsReady, submission]);\n\n return {\n element: renderElement,\n instance: webformRef.current\n };\n}\n"],"names":["undefined","hasOwnProperty","isArray","obj","defaultMaxListeners","nextTickSupported","symbolsSupported","reflectSupported","setImmediateSupported","_setImmediate","ownKeys","arr","init","configure","conf","logPossibleMemoryLeak","count","eventName","errorMsg","e","toArray","a","b","c","n","toObject","keys","values","key","len","valuesCount","i","TargetObserver","emitter","target","options","on","off","_observers","event","localEvent","reducer","observer","listeners","handler","args","eventObj","result","_event","events","clearRefs","index","findTargetIndex","resolveOptions","schema","reducers","allowUnknown","computedOptions","length","option","value","reject","reason","constructorReducer","makeTypeReducer","types","message","firstType","secondType","v","kind","functionReducer","objectFunctionReducer","makeCancelablePromise","Promise","executor","isCancelable","callbacks","timer","subscriptionClosed","promise","resolve","onCancel","cleanup","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","type","tree","typeLength","ns","l","j","delimiter","dl","branch","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","_listeners","growListenerTree","listener","prepend","name","collectTreeEvents","root","asArray","branchName","path","hasListeners","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","async","nextTick","objectify","_listener","_origin","context","EventEmitter","listen","isSingleReducer","matched","fn","ttl","self","wildcard","containsSymbol","al","promises","returnValue","temp","leafs","iLeaf","leaf","position","fns","_events","allListeners","listenerTree","nsAsArray","_all","filter","once","_Promise","eventListener","errorListener","prototype","module","getDefaultEmitter","EventEmitter2","onAnyEvent","outputArgs","funcName","createWebformInstance","FormConstructor","formSource","element","webform","getEffectiveProps","props","FormClass","Form","form","src","url","submission","onFormReady","onAsyncSubmit","createCustomValidation","customAction","ref","next","updatedSubmission","er","useForm","webformRef","useRef","renderElement","instanceIsReady","setInstanceIsReady","useState","useEffect","ignore","opts"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"useForm.js","sources":["../../../../../node_modules/eventemitter2/lib/eventemitter2.js","../../../src/organisms/form/useForm.ts"],"sourcesContent":["/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import { Form } from \"@formio/js\";\nimport { EventEmitter2 } from \"eventemitter2\";\nimport { type MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nimport type { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, JSONRecord, SubmissionType } from \"../../interfaces\";\nimport { FormCustomEvent } from \"./types\";\n\ntype Webform = any;\ntype EventError = string | Error | Error[] | { message: string } | { message: string }[];\n\nexport interface UseFormProps<Data extends JSONRecord = JSONRecord> {\n src?: string;\n url?: string;\n form?: FormType;\n submission?: SubmissionType<Data>;\n options?: FormOptions;\n FormClass?: typeof Form;\n onFormReady?: (instance: Webform) => void;\n onPrevPage?: (page: number, submission: SubmissionType<Data>) => void;\n onNextPage?: (page: number, submission: SubmissionType<Data>) => void;\n onCancelSubmit?: () => void;\n onCancelComponent?: (component: ComponentType) => void;\n onChange?: (value: ChangedSubmission<Data>, flags: any, modified: boolean) => void;\n onCustomEvent?: (event: FormCustomEvent) => void;\n onComponentChange?: (changed: { instance: Webform; component: Webform; value: any; flags: any }) => void;\n onSubmit?: (submission: SubmissionType<Data>, saved?: boolean) => void;\n onAsyncSubmit?: (submission: SubmissionType<Data>) => void;\n onSubmitDone?: (submission: SubmissionType<Data>) => void;\n onSubmitError?: (error: EventError) => void;\n onFormLoad?: (form: JSON) => void;\n onError?: (error: EventError | false) => void;\n onRender?: (param: any) => void;\n onAttach?: (param: any) => void;\n onBuild?: (param: any) => void;\n onFocus?: (instance: Webform) => void;\n onBlur?: (instance: Webform) => void;\n onInitialized?: () => void;\n onLanguageChanged?: () => void;\n onBeforeSetSubmission?: (submission: SubmissionType<Data>) => void;\n onSaveDraftBegin?: () => void;\n onSaveDraft?: (submission: SubmissionType<Data>) => void;\n onRestoreDraft?: (submission: SubmissionType<Data> | null) => void;\n onSubmissionDeleted?: (submission: SubmissionType<Data>) => void;\n onRequestDone?: () => void;\n otherEvents?: {\n [event: string]: (...args: any[]) => void;\n };\n}\n\nconst getDefaultEmitter = () => {\n return new EventEmitter2({\n wildcard: false,\n maxListeners: 0\n });\n};\n\nfunction onAnyEvent<Data extends JSONRecord = JSONRecord>(\n handlers: Omit<UseFormProps<Data>, \"src\" | \"url\" | \"form\" | \"submission\" | \"options\" | \"formReady\" | \"formioform\" | \"Formio\">,\n ...args: [string, ...any[]]\n) {\n const [event, ...outputArgs] = args;\n\n if (event.startsWith(\"formio.\")) {\n const funcName = `on${event.charAt(7).toUpperCase()}${event.slice(8)}`;\n\n if (funcName in handlers) {\n (handlers as any)[funcName](...outputArgs);\n }\n }\n if (handlers.otherEvents && handlers.otherEvents[event]) {\n handlers.otherEvents[event](...outputArgs);\n }\n}\n\nconst createWebformInstance = async (\n FormConstructor: any | undefined,\n formSource: any,\n element: HTMLDivElement,\n options: FormOptions = {}\n) => {\n if (!options?.events) {\n options.events = getDefaultEmitter();\n }\n\n if (typeof formSource !== \"string\") {\n formSource = structuredClone(formSource);\n }\n\n const promise = new FormConstructor(element, formSource, options);\n const webform = await promise.ready;\n\n webform.toJSON = () => ({ __WEBFORM__: true });\n\n return webform;\n};\n\n// Define effective props (aka I want to rename these props but also maintain backwards compatibility)\nfunction getEffectiveProps<Data extends JSONRecord = JSONRecord>(props: UseFormProps<Data>) {\n const { FormClass = Form, form, src, url, options, submission, onFormReady, onAsyncSubmit, ...handlers } = props;\n\n return {\n FormClass,\n formSource: form !== undefined ? form : src,\n handlers,\n options,\n url,\n submission,\n onFormReady,\n onAsyncSubmit\n };\n}\n\nfunction createCustomValidation(customAction: any, ref: MutableRefObject<Webform | null>) {\n return async (submission: SubmissionType, next: (error: null | Error) => void) => {\n try {\n const updatedSubmission = await customAction(submission);\n\n next(null);\n\n ref.current.onSubmit(updatedSubmission, true);\n } catch (er: any) {\n next(er.errors || er);\n } finally {\n ref.current.submissionInProcess = false;\n }\n };\n}\n\nexport function useForm<Data extends JSONRecord = JSONRecord>(props: UseFormProps<Data>) {\n const webformRef = useRef<Webform | null>(null);\n const renderElement = useRef<HTMLDivElement | null>(null);\n const { formSource, FormClass, options, url, submission, handlers, onFormReady, onAsyncSubmit } = getEffectiveProps(props);\n\n const [instanceIsReady, setInstanceIsReady] = useState(false);\n\n useEffect(() => {\n let ignore = false;\n const createInstance = async () => {\n if (renderElement.current === null) {\n console.warn(\"Form element not found\");\n return;\n }\n\n if (typeof formSource === \"undefined\") {\n console.warn(\"Form source not found\");\n return;\n }\n\n let opts = options || {};\n\n if (onAsyncSubmit) {\n opts.hooks = opts.hooks || {};\n opts.hooks.customValidation = createCustomValidation(props.onAsyncSubmit, webformRef);\n }\n\n const webform = await createWebformInstance(FormClass, formSource, renderElement.current, options);\n\n if (webform) {\n if (ignore) {\n webform.destroy(true);\n return;\n }\n\n if (typeof formSource === \"string\") {\n webform.src = formSource;\n } else if (typeof formSource === \"object\") {\n if (submission) {\n webform.setSubmission(submission);\n }\n\n if (url) {\n webform.url = url;\n }\n }\n\n if (onFormReady) {\n onFormReady(webform);\n }\n\n renderElement.current.className = \"formio-form-ready\";\n webformRef.current = webform;\n setInstanceIsReady(true);\n } else {\n console.warn(\"Failed to create form instance\");\n }\n };\n\n createInstance();\n\n return () => {\n ignore = true;\n if (webformRef.current) {\n webformRef.current.destroy(true);\n }\n };\n }, [formSource, url]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.onAny((...args: [string, ...any[]]) => {\n instanceIsReady && onAnyEvent(handlers, ...args);\n });\n }\n\n return () => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.offAny((...args: [string, ...any[]]) => onAnyEvent(handlers, ...args));\n }\n };\n }, [instanceIsReady, handlers]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && submission) {\n webformRef.current.setSubmission(submission);\n }\n }, [instanceIsReady, submission]);\n\n return {\n element: renderElement,\n instance: webformRef.current\n };\n}\n"],"names":["undefined","hasOwnProperty","isArray","obj","defaultMaxListeners","nextTickSupported","symbolsSupported","reflectSupported","setImmediateSupported","_setImmediate","ownKeys","arr","init","configure","conf","logPossibleMemoryLeak","count","eventName","errorMsg","e","toArray","a","b","c","n","toObject","keys","values","key","len","valuesCount","i","TargetObserver","emitter","target","options","on","off","_observers","event","localEvent","reducer","observer","listeners","handler","args","eventObj","result","_event","events","clearRefs","index","findTargetIndex","resolveOptions","schema","reducers","allowUnknown","computedOptions","length","option","value","reject","reason","constructorReducer","makeTypeReducer","types","message","firstType","secondType","v","kind","functionReducer","objectFunctionReducer","makeCancelablePromise","Promise","executor","isCancelable","callbacks","timer","subscriptionClosed","promise","resolve","onCancel","cleanup","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","type","tree","typeLength","ns","l","j","delimiter","dl","branch","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","_listeners","growListenerTree","listener","prepend","name","collectTreeEvents","root","asArray","branchName","path","hasListeners","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","async","nextTick","objectify","_listener","_origin","context","EventEmitter","listen","isSingleReducer","matched","fn","ttl","self","wildcard","containsSymbol","al","promises","returnValue","temp","leafs","iLeaf","leaf","position","fns","_events","allListeners","listenerTree","nsAsArray","_all","filter","once","_Promise","eventListener","errorListener","prototype","module","getDefaultEmitter","EventEmitter2","onAnyEvent","outputArgs","funcName","createWebformInstance","FormConstructor","formSource","element","webform","getEffectiveProps","props","FormClass","Form","form","src","url","submission","onFormReady","onAsyncSubmit","createCustomValidation","customAction","ref","next","updatedSubmission","er","useForm","webformRef","useRef","renderElement","instanceIsReady","setInstanceIsReady","useState","useEffect","ignore","opts"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/react-formio",
3
- "version": "3.0.0-rc.2",
3
+ "version": "3.0.0-rc.4",
4
4
  "description": "Provide a react formio wrapper. Written in TypeScript.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -44,8 +44,8 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@tanstack/react-table": ">=8.20.6",
47
- "@tsed/tailwind-formio": "3.0.0-rc.2",
48
- "@tsed/typescript": "3.0.0-rc.2",
47
+ "@tsed/tailwind-formio": "3.0.0-rc.4",
48
+ "@tsed/typescript": "3.0.0-rc.4",
49
49
  "microbundle": "0.13.0",
50
50
  "vite": "7.1.5",
51
51
  "vitest": "3.2.4"
@@ -0,0 +1,2 @@
1
+ export type JSON = unknown | string | number | boolean | null | undefined | JSON[] | { [key: string]: JSON };
2
+ export type JSONRecord = Record<string, JSON>;
@@ -1,17 +1,17 @@
1
1
  import React from "react";
2
2
 
3
3
  import type { OperationButtonProps } from "../molecules/table/components/DefaultOperationButton.js";
4
- import type { JSON } from "./SubmissionType.js";
4
+ import type { JSONRecord } from "./JSONRecord.js";
5
5
 
6
6
  export type CellMetadata = Record<string, unknown>;
7
7
 
8
- export type PermissionsResolver<Data extends { [key: string]: JSON } = { [key: string]: JSON }> = (
8
+ export type PermissionsResolver<Data extends JSONRecord = JSONRecord> = (
9
9
  data: Data,
10
10
  metadata: CellMetadata,
11
11
  operation: Operation<Data>
12
12
  ) => void;
13
13
 
14
- export interface Operation<Data extends { [key: string]: JSON } = { [key: string]: JSON }> {
14
+ export interface Operation<Data extends JSONRecord = JSONRecord> {
15
15
  /**
16
16
  * Action identifier
17
17
  */
@@ -1,16 +1,12 @@
1
1
  import type { Component, Submission } from "@formio/core";
2
2
 
3
- export type JSON = unknown | string | number | boolean | null | undefined | JSON[] | { [key: string]: JSON };
3
+ import type { JSONRecord } from "./JSONRecord.js";
4
4
 
5
- export type SubmissionType<Data extends { [key: string]: JSON } = { [key: string]: JSON }> = Omit<Partial<Submission>, "data"> & {
5
+ export type SubmissionType<Data extends JSONRecord = JSONRecord> = Omit<Partial<Submission>, "data"> & {
6
6
  data: Data;
7
7
  };
8
8
 
9
- export interface ChangedSubmission<
10
- Data extends { [key: string]: JSON } = {
11
- [key: string]: JSON;
12
- }
13
- > extends SubmissionType<Data> {
9
+ export interface ChangedSubmission<Data extends JSONRecord = JSONRecord> extends SubmissionType<Data> {
14
10
  data: Data;
15
11
  changed?: {
16
12
  component: Component;
@@ -1,6 +1,6 @@
1
- import { ComponentType, JSON, SubmissionType } from "../../interfaces";
1
+ import { ComponentType, type JSONRecord, SubmissionType } from "../../interfaces";
2
2
 
3
- export interface FormPageChangeProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }> {
3
+ export interface FormPageChangeProps<Data extends JSONRecord = JSONRecord> {
4
4
  page: number;
5
5
  submission: SubmissionType<Data>;
6
6
  }
@@ -2,13 +2,13 @@ import { Form } from "@formio/js";
2
2
  import { EventEmitter2 } from "eventemitter2";
3
3
  import { type MutableRefObject, useEffect, useRef, useState } from "react";
4
4
 
5
- import type { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, SubmissionType } from "../../interfaces";
5
+ import type { ChangedSubmission, ComponentType, FormOptions, FormType, JSON, JSONRecord, SubmissionType } from "../../interfaces";
6
6
  import { FormCustomEvent } from "./types";
7
7
 
8
8
  type Webform = any;
9
9
  type EventError = string | Error | Error[] | { message: string } | { message: string }[];
10
10
 
11
- export interface UseFormProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }> {
11
+ export interface UseFormProps<Data extends JSONRecord = JSONRecord> {
12
12
  src?: string;
13
13
  url?: string;
14
14
  form?: FormType;
@@ -54,7 +54,7 @@ const getDefaultEmitter = () => {
54
54
  });
55
55
  };
56
56
 
57
- function onAnyEvent<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(
57
+ function onAnyEvent<Data extends JSONRecord = JSONRecord>(
58
58
  handlers: Omit<UseFormProps<Data>, "src" | "url" | "form" | "submission" | "options" | "formReady" | "formioform" | "Formio">,
59
59
  ...args: [string, ...any[]]
60
60
  ) {
@@ -95,7 +95,7 @@ const createWebformInstance = async (
95
95
  };
96
96
 
97
97
  // Define effective props (aka I want to rename these props but also maintain backwards compatibility)
98
- function getEffectiveProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(props: UseFormProps<Data>) {
98
+ function getEffectiveProps<Data extends JSONRecord = JSONRecord>(props: UseFormProps<Data>) {
99
99
  const { FormClass = Form, form, src, url, options, submission, onFormReady, onAsyncSubmit, ...handlers } = props;
100
100
 
101
101
  return {
@@ -126,7 +126,7 @@ function createCustomValidation(customAction: any, ref: MutableRefObject<Webform
126
126
  };
127
127
  }
128
128
 
129
- export function useForm<Data extends { [key: string]: JSON } = { [key: string]: JSON }>(props: UseFormProps<Data>) {
129
+ export function useForm<Data extends JSONRecord = JSONRecord>(props: UseFormProps<Data>) {
130
130
  const webformRef = useRef<Webform | null>(null);
131
131
  const renderElement = useRef<HTMLDivElement | null>(null);
132
132
  const { formSource, FormClass, options, url, submission, handlers, onFormReady, onAsyncSubmit } = getEffectiveProps(props);