jsf.js_next_gen 4.0.3-beta.4 → 4.0.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -167,5 +167,16 @@ and adjusts the references in the resource accordingly to the request patterns
167
167
  * Elimination of Streams in favor of native arrays
168
168
  * Providing an internal non intrusive shim for browsers which do not have array map and flapMap
169
169
  (older Edge and Chromium versions) - done in mona-dish
170
-
170
+ * Adding a progress monitoring functionality under the myfaces namespace
171
+ ```json
172
+ faces.ajax.request(document.getElementById("cmd_eval"), null, {
173
+ render: '@form',
174
+ execute: '@form',
175
+ myfaces: {
176
+ onProgress: (event: ProgressEvent) => {
177
+ caughtProgressEvents.push(event);
178
+ }
179
+ }
180
+ });
181
+ ```
171
182
 
@@ -4478,7 +4478,7 @@ var Implementation;
4478
4478
  * b) passThrough handling with a map copy with a filter map block map
4479
4479
  */
4480
4480
  function request(el, event, opts) {
4481
- var _a, _b, _c, _d, _e;
4481
+ var _a, _b, _c, _d, _e, _f, _g;
4482
4482
  const { options, elem, elementId, windowId, isResetValues } = (0, RequestDataResolver_1.resolveDefaults)(event, opts, el);
4483
4483
  const requestCtx = new ExtDomQuery_1.ExtConfig({});
4484
4484
  const internalCtx = new ExtDomQuery_1.ExtConfig({});
@@ -4544,6 +4544,11 @@ var Implementation;
4544
4544
  // additional meta information to speed things up, note internal non jsf
4545
4545
  // pass through options are stored under _mfInternal in the context
4546
4546
  internalCtx.assign(Const_1.CTX_PARAM_SRC_FRM_ID).value = formId;
4547
+ /**
4548
+ * special myfaces only internal parameter for onProgress until we have an official api
4549
+ * that way we can track the progress of a xhr request (useful for file uploads)
4550
+ */
4551
+ internalCtx.assign(Const_1.CTX_PARAM_ON_PROGRESS).value = (_e = (_d = options.value) === null || _d === void 0 ? void 0 : _d.myfaces) === null || _e === void 0 ? void 0 : _e.onProgress;
4547
4552
  // mojarra compatibility, mojarra is sending the form id as well
4548
4553
  // this is not documented behavior but can be determined by running
4549
4554
  // mojarra under blackbox conditions.
@@ -4552,7 +4557,7 @@ var Implementation;
4552
4557
  requestCtx.assign(Const_1.CTX_PARAM_REQ_PASS_THR, formId).value = formId;
4553
4558
  internalCtx.assign(Const_1.CTX_PARAM_SRC_CTL_ID).value = elementId;
4554
4559
  // reintroduction of PPS as per myfaces 2.3 (myfaces.pps = true, only the executes are submitted)
4555
- internalCtx.assign(Const_1.CTX_PARAM_PPS).value = (_e = (_d = extractMyFacesParams(options.value)) === null || _d === void 0 ? void 0 : _d[Const_1.MYFACES_OPTION_PPS]) !== null && _e !== void 0 ? _e : false;
4560
+ internalCtx.assign(Const_1.CTX_PARAM_PPS).value = (_g = (_f = extractMyFacesParams(options.value)) === null || _f === void 0 ? void 0 : _f[Const_1.MYFACES_OPTION_PPS]) !== null && _g !== void 0 ? _g : false;
4556
4561
  assignClientWindowId(form, requestCtx);
4557
4562
  assignExecute(options, requestCtx, form, elementId);
4558
4563
  assignRender(options, requestCtx, form, elementId);
@@ -5304,8 +5309,8 @@ var PushImpl;
5304
5309
  */
5305
5310
  Object.defineProperty(exports, "__esModule", ({ value: true }));
5306
5311
  exports.CTX_OPTIONS_PARAMS = exports.TIMEOUT_EVENT = exports.CLIENT_ERROR = exports.SERVER_ERROR = exports.MALFORMEDXML = exports.EMPTY_RESPONSE = exports.HTTP_ERROR = exports.RESPONSE_XML = exports.RESPONSE_TEXT = exports.ERROR_MESSAGE = exports.ERROR_NAME = exports.STATUS = exports.SOURCE = exports.SUCCESS = exports.COMPLETE = exports.BEGIN = exports.ON_EVENT = exports.ON_ERROR = exports.EVENT = exports.ERROR = exports.WINDOW_ID = exports.CTX_PARAM_RENDER = exports.P_BEHAVIOR_EVENT = exports.P_WINDOW_ID = exports.P_RESET_VALUES = exports.P_EVT = exports.P_RENDER_OVERRIDE = exports.P_RENDER = exports.P_EXECUTE = exports.P_AJAX = exports.IDENT_FORM = exports.IDENT_THIS = exports.IDENT_NONE = exports.IDENT_ALL = exports.HTML_CLIENT_WINDOW = exports.HTML_VIEWSTATE = exports.EMPTY_MAP = exports.EMPTY_STR = exports.EMPTY_FUNC = exports.P_RESOURCE = exports.P_VIEWBODY = exports.P_VIEWHEAD = exports.P_VIEWROOT = exports.P_CLIENT_WINDOW = exports.P_VIEWSTATE = exports.VIEW_ID = exports.NAMING_CONTAINER_ID = exports.P_AJAX_SOURCE = exports.NAMED_VIEWROOT = exports.XML_ATTR_NAMED_VIEWROOT = void 0;
5307
- exports.XML_TAG_REDIRECT = exports.XML_TAG_EXTENSION = exports.XML_TAG_ATTRIBUTES = exports.XML_TAG_ERROR = exports.XML_TAG_EVAL = exports.XML_TAG_INSERT = exports.XML_TAG_DELETE = exports.XML_TAG_UPDATE = exports.XML_TAG_CHANGES = exports.XML_TAG_PARTIAL_RESP = exports.ATTR_ID = exports.ATTR_VALUE = exports.ATTR_NAME = exports.ATTR_URL = exports.MYFACES_OPTION_PPS = exports.ERR_NO_PARTIAL_RESPONSE = exports.PHASE_PROCESS_RESPONSE = exports.SEL_RESPONSE_XML = exports.SEL_CLIENT_WINDOW_ELEM = exports.SEL_VIEWSTATE_ELEM = exports.HTML_TAG_STYLE = exports.HTML_TAG_SCRIPT = exports.HTML_TAG_LINK = exports.HTML_TAG_BODY = exports.HTML_TAG_FORM = exports.HTML_TAG_HEAD = exports.STD_ACCEPT = exports.NO_TIMEOUT = exports.MULTIPART = exports.URL_ENCODED = exports.STATE_EVT_COMPLETE = exports.STATE_EVT_TIMEOUT = exports.STATE_EVT_BEGIN = exports.REQ_TYPE_POST = exports.REQ_TYPE_GET = exports.ENCODED_URL = exports.VAL_AJAX = exports.REQ_ACCEPT = exports.HEAD_FACES_REQ = exports.CONTENT_TYPE = exports.CTX_PARAM_PPS = exports.CTX_PARAM_REQ_PASS_THR = exports.CTX_PARAM_SRC_CTL_ID = exports.CTX_PARAM_SRC_FRM_ID = exports.CTX_PARAM_MF_INTERNAL = exports.CTX_OPTIONS_EXECUTE = exports.CTX_OPTIONS_RESET = exports.CTX_OPTIONS_TIMEOUT = exports.DELAY_NONE = exports.CTX_OPTIONS_DELAY = void 0;
5308
- exports.$nsp = exports.$faces = exports.UNKNOWN = exports.MAX_RECONNECT_ATTEMPTS = exports.RECONNECT_INTERVAL = exports.APPLIED_CLIENT_WINDOW = exports.APPLIED_VST = exports.REASON_EXPIRED = exports.MF_NONE = exports.MYFACES = exports.DEFERRED_HEAD_INSERTS = exports.UPDATE_ELEMS = exports.UPDATE_FORMS = exports.XML_TAG_ATTR = exports.XML_TAG_AFTER = exports.XML_TAG_BEFORE = void 0;
5312
+ exports.XML_TAG_EXTENSION = exports.XML_TAG_ATTRIBUTES = exports.XML_TAG_ERROR = exports.XML_TAG_EVAL = exports.XML_TAG_INSERT = exports.XML_TAG_DELETE = exports.XML_TAG_UPDATE = exports.XML_TAG_CHANGES = exports.XML_TAG_PARTIAL_RESP = exports.ATTR_ID = exports.ATTR_VALUE = exports.ATTR_NAME = exports.ATTR_URL = exports.MYFACES_OPTION_PPS = exports.ERR_NO_PARTIAL_RESPONSE = exports.PHASE_PROCESS_RESPONSE = exports.SEL_RESPONSE_XML = exports.SEL_CLIENT_WINDOW_ELEM = exports.SEL_VIEWSTATE_ELEM = exports.HTML_TAG_STYLE = exports.HTML_TAG_SCRIPT = exports.HTML_TAG_LINK = exports.HTML_TAG_BODY = exports.HTML_TAG_FORM = exports.HTML_TAG_HEAD = exports.STD_ACCEPT = exports.NO_TIMEOUT = exports.MULTIPART = exports.URL_ENCODED = exports.STATE_EVT_COMPLETE = exports.STATE_EVT_TIMEOUT = exports.STATE_EVT_BEGIN = exports.REQ_TYPE_POST = exports.REQ_TYPE_GET = exports.ENCODED_URL = exports.VAL_AJAX = exports.REQ_ACCEPT = exports.HEAD_FACES_REQ = exports.CONTENT_TYPE = exports.CTX_PARAM_PPS = exports.CTX_PARAM_REQ_PASS_THR = exports.CTX_PARAM_SRC_CTL_ID = exports.CTX_PARAM_ON_PROGRESS = exports.CTX_PARAM_SRC_FRM_ID = exports.CTX_PARAM_MF_INTERNAL = exports.CTX_OPTIONS_EXECUTE = exports.CTX_OPTIONS_RESET = exports.CTX_OPTIONS_TIMEOUT = exports.DELAY_NONE = exports.CTX_OPTIONS_DELAY = void 0;
5313
+ exports.$nsp = exports.$faces = exports.UNKNOWN = exports.MAX_RECONNECT_ATTEMPTS = exports.RECONNECT_INTERVAL = exports.APPLIED_CLIENT_WINDOW = exports.APPLIED_VST = exports.REASON_EXPIRED = exports.MF_NONE = exports.MYFACES = exports.DEFERRED_HEAD_INSERTS = exports.UPDATE_ELEMS = exports.UPDATE_FORMS = exports.XML_TAG_ATTR = exports.XML_TAG_AFTER = exports.XML_TAG_BEFORE = exports.XML_TAG_REDIRECT = void 0;
5309
5314
  /*
5310
5315
  * [export const] constants
5311
5316
  */
@@ -5373,6 +5378,7 @@ exports.CTX_OPTIONS_RESET = "resetValues";
5373
5378
  exports.CTX_OPTIONS_EXECUTE = "execute";
5374
5379
  exports.CTX_PARAM_MF_INTERNAL = "myfaces.internal";
5375
5380
  exports.CTX_PARAM_SRC_FRM_ID = "myfaces.source.formId";
5381
+ exports.CTX_PARAM_ON_PROGRESS = "myfaces.onProgress";
5376
5382
  exports.CTX_PARAM_SRC_CTL_ID = "myfaces.source.controlId";
5377
5383
  exports.CTX_PARAM_REQ_PASS_THR = "myfaces.request.passThrough";
5378
5384
  exports.CTX_PARAM_PPS = "myfaces.request.pps";
@@ -5773,6 +5779,7 @@ class AsyncRunnable {
5773
5779
  */
5774
5780
  this.catchFunctions = [];
5775
5781
  this.thenFunctions = [];
5782
+ this.progressListeners = [];
5776
5783
  }
5777
5784
  /**
5778
5785
  * resolve handler function which calls the then chain
@@ -5793,6 +5800,13 @@ class AsyncRunnable {
5793
5800
  return catchFunc(inputVal);
5794
5801
  }, data);
5795
5802
  }
5803
+ /**
5804
+ * on progress handler which can show a progress of the current runnable
5805
+ * @param data
5806
+ */
5807
+ onProgress(data) {
5808
+ this.progressListeners.forEach((listener) => listener(data));
5809
+ }
5796
5810
  /**
5797
5811
  * register a catch functor
5798
5812
  * @param func the functor for the catch monad
@@ -5801,6 +5815,14 @@ class AsyncRunnable {
5801
5815
  this.catchFunctions.push(func);
5802
5816
  return this;
5803
5817
  }
5818
+ /**
5819
+ * register a catch functor
5820
+ * @param func the functor for the catch monad
5821
+ */
5822
+ progress(func) {
5823
+ this.progressListeners.push(func);
5824
+ return this;
5825
+ }
5804
5826
  /**
5805
5827
  * registers a finally functor
5806
5828
  * @param func the functor for the finally handling chanin
@@ -6508,12 +6530,17 @@ var ExtLang;
6508
6530
  return foundForm;
6509
6531
  }
6510
6532
  }
6533
+ //no direct form is found we look for parent/child relationships as fallback
6534
+ //(90% case)
6511
6535
  let form = queryElem.firstParent(Const_1.HTML_TAG_FORM)
6512
6536
  .orElseLazy(() => queryElem.byTagName(Const_1.HTML_TAG_FORM, true))
6513
6537
  .orElseLazy(() => eventTarget.firstParent(Const_1.HTML_TAG_FORM))
6514
6538
  .orElseLazy(() => eventTarget.byTagName(Const_1.HTML_TAG_FORM))
6515
- .orElseLazy(() => mona_dish_1.DQ.byTagName(Const_1.HTML_TAG_FORM))
6516
6539
  .first();
6540
+ //either a form is found within parent child - nearest form (aka first)
6541
+ //or we look for a single form
6542
+ form = form.orElseLazy(() => mona_dish_1.DQ.byTagName(Const_1.HTML_TAG_FORM));
6543
+ //the end result must be a found form otherwise - Exception
6517
6544
  assertOnlyOneFormExists(form);
6518
6545
  return form;
6519
6546
  }
@@ -8073,7 +8100,7 @@ class XhrRequest extends AsyncRunnable_1.AsyncRunnable {
8073
8100
  // we omit promises here because we have to deal with cancel functionality,
8074
8101
  // and promises to not provide that (yet) instead we have our async queue
8075
8102
  // which uses an api internally, which is very close to promises
8076
- this.registerXhrCallbacks((data) => this.resolve(data), (data) => this.reject(data));
8103
+ this.registerXhrCallbacks((data) => this.resolve(data), (data) => this.reject(data), (data) => this.onProgress(data));
8077
8104
  }
8078
8105
  start() {
8079
8106
  let ignoreErr = failSaveExecute;
@@ -8165,7 +8192,7 @@ class XhrRequest extends AsyncRunnable_1.AsyncRunnable {
8165
8192
  * @param resolve
8166
8193
  * @param reject
8167
8194
  */
8168
- registerXhrCallbacks(resolve, reject) {
8195
+ registerXhrCallbacks(resolve, reject, progress) {
8169
8196
  const xhrObject = this.xhrObject;
8170
8197
  xhrObject.onabort = () => {
8171
8198
  this.onAbort(resolve, reject);
@@ -8179,6 +8206,10 @@ class XhrRequest extends AsyncRunnable_1.AsyncRunnable {
8179
8206
  xhrObject.onloadend = () => {
8180
8207
  this.onResponseProcessed(this.xhrObject, resolve);
8181
8208
  };
8209
+ this.registerProgressListeners();
8210
+ xhrObject.onprogress = (event) => {
8211
+ progress(event);
8212
+ };
8182
8213
  xhrObject.onerror = (errorData) => {
8183
8214
  // Safari in rare cases triggers an error when cancelling a request internally, or when
8184
8215
  // in this case we simply ignore the request and clear up the queue, because
@@ -8204,6 +8235,12 @@ class XhrRequest extends AsyncRunnable_1.AsyncRunnable {
8204
8235
  this.handleError(errorData);
8205
8236
  };
8206
8237
  }
8238
+ registerProgressListeners() {
8239
+ let onProgress = this.internalContext.getIf(Const_1.CTX_PARAM_ON_PROGRESS);
8240
+ if (onProgress.isPresent()) {
8241
+ this.progress(onProgress.value);
8242
+ }
8243
+ }
8207
8244
  isCancelledResponse(currentTarget) {
8208
8245
  return (currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.status) === 0 && // cancelled internally by browser
8209
8246
  (currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.readyState) === 4 &&