surveysparrow-ionic-plugin 2.0.2-beta.1 → 2.0.2-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/angular-ui/esm2022/spotchecks/SpotCheckComponent.mjs +87 -58
  2. package/dist/angular-ui/esm2022/spotchecks/SpotCheckEventListener.mjs +26 -0
  3. package/dist/angular-ui/esm2022/spotchecks/api.mjs +1 -1
  4. package/dist/angular-ui/esm2022/spotchecks/helpers.mjs +6 -3
  5. package/dist/angular-ui/esm2022/spotchecks/index.mjs +2 -1
  6. package/dist/angular-ui/fesm2022/angular-ui.mjs +116 -61
  7. package/dist/angular-ui/fesm2022/angular-ui.mjs.map +1 -1
  8. package/dist/angular-ui/spotchecks/SpotCheckComponent.d.ts +10 -4
  9. package/dist/angular-ui/spotchecks/SpotCheckEventListener.d.ts +16 -0
  10. package/dist/angular-ui/spotchecks/index.d.ts +1 -0
  11. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.d.ts +10 -4
  12. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js +82 -55
  13. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js.map +1 -1
  14. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.d.ts +16 -0
  15. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.js +28 -0
  16. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.js.map +1 -0
  17. package/dist/esm/angular-ui/lib/spotchecks/api.js.map +1 -1
  18. package/dist/esm/angular-ui/lib/spotchecks/helpers.js +5 -2
  19. package/dist/esm/angular-ui/lib/spotchecks/helpers.js.map +1 -1
  20. package/dist/esm/angular-ui/lib/spotchecks/index.d.ts +1 -0
  21. package/dist/esm/angular-ui/lib/spotchecks/index.js +1 -0
  22. package/dist/esm/angular-ui/lib/spotchecks/index.js.map +1 -1
  23. package/dist/plugin.cjs.js +110 -54
  24. package/dist/plugin.cjs.js.map +1 -1
  25. package/dist/plugin.js +110 -54
  26. package/dist/plugin.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/angular-ui/lib/spotchecks/SpotCheckComponent.ts +94 -62
  29. package/src/angular-ui/lib/spotchecks/SpotCheckEventListener.ts +50 -0
  30. package/src/angular-ui/lib/spotchecks/api.ts +2 -2
  31. package/src/angular-ui/lib/spotchecks/helpers.ts +6 -4
  32. package/src/angular-ui/lib/spotchecks/index.ts +3 -0
@@ -2,6 +2,7 @@ import { v4 as uuidv4 } from 'uuid';
2
2
  import { Device } from '@capacitor/device';
3
3
  import axios from 'axios';
4
4
  import { SpotcheckStateService } from './SpotcheckStateService';
5
+ import { getSpotCheckEventListener } from './SpotCheckEventListener';
5
6
  let globalSpotcheckStateService;
6
7
  let globalOS = null;
7
8
  export const getSpotcheckStateService = () => {
@@ -198,7 +199,10 @@ export const closeSpotCheck = async () => {
198
199
  },
199
200
  body: JSON.stringify(payload),
200
201
  });
201
- if (response.status != 200) {
202
+ if (response.status == 200) {
203
+ getSpotCheckEventListener().emit('surveyDismissed');
204
+ }
205
+ else {
202
206
  console.log(`Error: ${response.status}`);
203
207
  }
204
208
  }
@@ -329,7 +333,6 @@ export const getSpotcheckComponentCssStyles = (state) => {
329
333
  };
330
334
  };
331
335
  export const closeSpotCheckAndHandleSurveyEnd = async () => {
332
- await closeSpotCheck();
333
336
  handleSurveyEnd();
334
337
  };
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2tzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxJQUFJLDJCQUFrRCxDQUFDO0FBQ3ZELElBQUksUUFBUSxHQUFrQixJQUFJLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBMEIsRUFBRTtJQUNsRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNqQywyQkFBMkIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUNELE9BQU8sMkJBQTJCLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQzNDLE9BQU8sQ0FDTCxJQUFJLEtBQUssZ0JBQWdCO1FBQ3pCLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksS0FBSyxVQUFVLENBQ3BCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUU7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LE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFDdkIsVUFBVSxFQUFFLCtDQUErQyxHQUFDLElBQUk7WUFDaEUsWUFBWSxFQUFFLFlBQVksR0FBQyxJQUFJO1lBQy9CLEdBQUcsTUFBTTtTQUNWO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3pELE1BQU0sY0FBYyxFQUFFLENBQUM7SUFDdkIsZUFBZSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBEZXZpY2UgfSBmcm9tICdAY2FwYWNpdG9yL2RldmljZSc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcblxubGV0IGdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xubGV0IGdsb2JhbE9TOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSA9ICgpOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPT4ge1xuICBpZiAoIWdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZSkge1xuICAgIGdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZSA9IG5ldyBTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVHJhY2VJZCgpIHtcbiAgY29uc3QgdXVpZFN0cmluZyA9IHV1aWR2NCgpO1xuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICByZXR1cm4gYCR7dXVpZFN0cmluZ30tJHt0aW1lc3RhbXB9YDtcbn1cblxuZXhwb3J0IGNvbnN0IGlzY2hhdFN1cnZleSA9ICh0eXBlOiBTdHJpbmcpID0+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlID09PSAnQ29udmVyc2F0aW9uYWwnIHx8XG4gICAgdHlwZSA9PT0gJ0NFU0NoYXQnIHx8XG4gICAgdHlwZSA9PT0gJ05QU0NoYXQnIHx8XG4gICAgdHlwZSA9PT0gJ0NTQVRDaGF0J1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9TID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBpbmZvID0gYXdhaXQgRGV2aWNlLmdldEluZm8oKTtcbiAgZ2xvYmFsT1MgPSBpbmZvLm9wZXJhdGluZ1N5c3RlbTtcbiAgcmV0dXJuIGdsb2JhbE9TO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFwcGVhcmFuY2UgPSBhc3luYyAoXG4gIHJlc3BvbnNlSnNvbjogYW55LFxuICBzY3JlZW46IHN0cmluZyxcbiAgZG9tYWluTmFtZTogc3RyaW5nLFxuICB0cmFjZUlkOiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55PlxuKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgbGV0IHN0YXRlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG5cbiAgICBpZiAocmVzcG9uc2VKc29uKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3BvdGNoZWNrID0gc3RhdGUuZmlsdGVyZWRTcG90Q2hlY2tzLmZpbmQoXG4gICAgICAgIChzcG90Y2hlY2spID0+XG4gICAgICAgICAgc3BvdGNoZWNrWydpZCddID09PSByZXNwb25zZUpzb24/LnNwb3RDaGVja0lkIHx8XG4gICAgICAgICAgc3BvdGNoZWNrWydpZCddID09PSByZXNwb25zZUpzb24/LmlkXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhcHBlYXJhbmNlID0gcmVzcG9uc2VKc29uPy5hcHBlYXJhbmNlO1xuICAgICAgbGV0IGNoYXQgPSBmYWxzZTtcblxuICAgICAgbGV0IHVwZGF0ZWRTdGF0ZTogUGFydGlhbDxTcG90Y2hlY2tTdGF0ZT4gPSB7fTtcblxuICAgICAgaWYgKGFwcGVhcmFuY2UpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgIGNsb3NlQnV0dG9uLFxuICAgICAgICAgIGNvbG9ycyxcbiAgICAgICAgICBjYXJkUHJvcGVydGllcyxcbiAgICAgICAgICBtb2RlLFxuICAgICAgICAgIGJhbm5lckltYWdlLFxuICAgICAgICB9ID0gYXBwZWFyYW5jZTtcbiAgICAgICAgY29uc3QgeyBtYXhIZWlnaHQgfSA9IGNhcmRQcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgICAgIHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgICBzcG90Y2hlY2tQb3NpdGlvbjpcbiAgICAgICAgICAgIHBvc2l0aW9uID09PSAndG9wX2Z1bGwnIHx8IHBvc2l0aW9uID09PSAnY2VudGVyX3RvcCdcbiAgICAgICAgICAgICAgPyAndG9wJ1xuICAgICAgICAgICAgICA6IHBvc2l0aW9uID09PSAnY2VudGVyX2NlbnRlcidcbiAgICAgICAgICAgICAgPyAnY2VudGVyJ1xuICAgICAgICAgICAgICA6ICdib3R0b20nLFxuICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBjbG9zZUJ1dHRvbiA/PyB0cnVlLFxuICAgICAgICAgIGNsb3NlQnV0dG9uU3R5bGU6IGNvbG9ycz8ub3ZlcnJpZGVzID8/IHt9LFxuICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0ID8gcGFyc2VGbG9hdChtYXhIZWlnaHQpIC8gMTAwIDogMCxcbiAgICAgICAgICBzcG90Q2hlY2tUeXBlOlxuICAgICAgICAgICAgaXNjaGF0U3VydmV5KGN1cnJlbnRTcG90Y2hlY2s/Llsnc3VydmV5J10/LnN1cnZleVR5cGUpICYmXG4gICAgICAgICAgICBtb2RlID09PSAnZnVsbFNjcmVlbidcbiAgICAgICAgICAgICAgPyAnY2hhdCdcbiAgICAgICAgICAgICAgOiAnY2xhc3NpYycsXG4gICAgICAgICAgaXNGdWxsU2NyZWVuTW9kZTogbW9kZSA9PT0gJ2Z1bGxTY3JlZW4nLFxuICAgICAgICAgIGlzQmFubmVySW1hZ2VPbjogYmFubmVySW1hZ2U/LmVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICAgICAgc3BvdENoZWNrc01vZGU6IG1vZGUsXG4gICAgICAgICAgYXZhdGFyRW5hYmxlZDogYXBwZWFyYW5jZT8uYXZhdGFyPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICAgIGF2YXRhclVybDogYXBwZWFyYW5jZT8uYXZhdGFyPy5hdmF0YXJVcmwgPz8gJycsXG4gICAgICAgIH07XG5cbiAgICAgICAgY2hhdCA9IHVwZGF0ZWRTdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwb3RDaGVja0lkID0gcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tJZCA/PyAwO1xuICAgICAgY29uc3Qgc3BvdENoZWNrQ29udGFjdElkID1cbiAgICAgICAgcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tDb250YWN0SWQgPz9cbiAgICAgICAgcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tDb250YWN0Py5pZCA/P1xuICAgICAgICAwO1xuICAgICAgY29uc3QgdHJpZ2dlclRva2VuID0gcmVzcG9uc2VKc29uPy50cmlnZ2VyVG9rZW4gPz8gJyc7XG5cbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgLi4udXBkYXRlZFN0YXRlLFxuICAgICAgICBzcG90Y2hlY2tJRDogc3BvdENoZWNrSWQsXG4gICAgICAgIHNwb3RjaGVja0NvbnRhY3RJRDogc3BvdENoZWNrQ29udGFjdElkLFxuICAgICAgICB0cmlnZ2VyVG9rZW4sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBiYXNlU3BvdGNoZWNrVVJMID0gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9zL3Nwb3RjaGVjay8ke3RyaWdnZXJUb2tlbn0vJHtcbiAgICAgICAgY2hhdCA/ICdjb25maWcnIDogJ2Jvb3RzdHJhcCdcbiAgICAgIH0/c3BvdGNoZWNrQ29udGFjdElkPSR7c3BvdENoZWNrQ29udGFjdElkfSZ0cmFjZUlkPSR7dHJhY2VJZH0mc3BvdGNoZWNrVXJsPSR7c2NyZWVufWA7XG5cbiAgICAgIGxldCBmdWxsU3BvdGNoZWNrVVJMID0gYmFzZVNwb3RjaGVja1VSTDtcblxuICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgZnVsbFNwb3RjaGVja1VSTCArPSBgJiR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlZFN0YXRlLnNwb3RjaGVja1VSTCA9IGZ1bGxTcG90Y2hlY2tVUkw7XG4gICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUodXBkYXRlZFN0YXRlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoZnVsbFNwb3RjaGVja1VSTCk7XG4gICAgICAgIGNvbnN0IHRoZW1lSW5mbyA9IHJlc3BvbnNlLmRhdGE/LmNvbmZpZz8uZ2VuZXJhdGVkQ1NTO1xuICAgICAgICBjb25zdCB0aGVtZV9wYXlsb2FkID0geyB0eXBlOiAnVEhFTUVfVVBEQVRFX1NQT1RDSEVDSycsIHRoZW1lSW5mbyB9O1xuICAgICAgICBzdGF0ZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuXG4gICAgICAgIGxldCB3ZWJWaWV3UmVmID0gY2hhdCA/IHN0YXRlLmNoYXRXZWJWaWV3UmVmIDogc3RhdGUuY2xhc3NpY1dlYlZpZXdSZWY7XG4gICAgICAgIGxldCBpc0xvYWRpbmcgPSBjaGF0ID8gc3RhdGUuaXNDaGF0TG9hZGluZyB8fCAhc3RhdGUuaXNDaGF0TG9hZEV2ZW50UmVjZWl2ZWQgOiBzdGF0ZS5pc0NsYXNzaWNMb2FkaW5nIHx8ICFzdGF0ZS5pc0NsYXNzaWNMb2FkRXZlbnRSZWNlaXZlZDtcblxuICAgICAgICBjb25zdCByZXNldFN0YXRlRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiAnUkVTRVRfU1RBVEUnLFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAuLi4ocmVzcG9uc2UuZGF0YSB8fCB7fSksXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgICAgc3BvdENoZWNrQXBwZWFyYW5jZToge1xuICAgICAgICAgICAgICAuLi4oYXBwZWFyYW5jZSB8fCB7fSksXG4gICAgICAgICAgICAgIHRhcmdldFR5cGU6ICdNT0JJTEUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNwb3RjaGVja1VybDogc2NyZWVuLFxuICAgICAgICAgICAgdHJhY2VJZCxcbiAgICAgICAgICAgIGVsZW1lbnRCdWlsZGVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgIC4uLih2YXJpYWJsZXMgfHwge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlVG9JZnJhbWUgPSAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGlmcmFtZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoZGF0YSwgJyonKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvIGlmcmFtZTonLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbW11bmljYXRlV2l0aFdlYlZpZXcgPSBhc3luYyAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZW5kTWVzc2FnZVRvSWZyYW1lKGlmcmFtZSwgcmVzZXRTdGF0ZURhdGEpO1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb0lmcmFtZShpZnJhbWUsIHRoZW1lX3BheWxvYWQpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9LCAyMDAwKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHdlYlZpZXdSZWYpIHtcbiAgICAgICAgICBpZiAoaXNMb2FkaW5nID09PSBmYWxzZSkge1xuICAgICAgICAgICAgY29tbXVuaWNhdGVXaXRoV2ViVmlldyh3ZWJWaWV3UmVmKTtcbiAgICAgICAgICAgIHN0YXJ0KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdG9kbzogcmVjaGVjayB0aGlzXG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgaXNDaGF0TG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIGlzQ2xhc3NpY0xvYWRpbmcsXG4gICAgICAgICAgICAgICAgICBjaGF0V2ViVmlld1JlZixcbiAgICAgICAgICAgICAgICAgIGNsYXNzaWNXZWJWaWV3UmVmLFxuICAgICAgICAgICAgICAgICAgaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBpc0NoYXRMb2FkRXZlbnRSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICB9ID0gY3VycmVudFN0YXRlO1xuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCghaXNDaGF0TG9hZGluZyAmJiBjaGF0ICYmIGlzQ2hhdExvYWRFdmVudFJlY2VpdmVkKSB8fCAoIWlzQ2xhc3NpY0xvYWRpbmcgJiYgIWNoYXQgJiYgaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQpKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlV2ViVmlld1JlZiA9IGNoYXRcbiAgICAgICAgICAgICAgICAgICAgPyBjaGF0V2ViVmlld1JlZlxuICAgICAgICAgICAgICAgICAgICA6IGNsYXNzaWNXZWJWaWV3UmVmO1xuICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVdlYlZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGVXaXRoV2ViVmlldyhhY3RpdmVXZWJWaWV3UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAn4pqg77iPIEFjdGl2ZSBXZWJWaWV3IHJlZiBpcyBudWxsIGFmdGVyIGxvYWRpbmcgY29tcGxldGVkJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZVdlYlZpZXcgPSBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFdlYlZpZXdSZWYgPSBjaGF0XG4gICAgICAgICAgICAgICAgPyBjdXJyZW50U3RhdGUuY2hhdFdlYlZpZXdSZWZcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRTdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZElzTG9hZGluZyA9IGNoYXRcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnRTdGF0ZS5pc0NoYXRMb2FkaW5nIHx8ICFjdXJyZW50U3RhdGUuaXNDaGF0TG9hZEV2ZW50UmVjZWl2ZWRcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRTdGF0ZS5pc0NsYXNzaWNMb2FkaW5nIHx8ICFjdXJyZW50U3RhdGUuaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRXZWJWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVkSXNMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZVdlYlZpZXcudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRlV2l0aFdlYlZpZXcodXBkYXRlZFdlYlZpZXdSZWYpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KPsyBXZWJWaWV3IHJlZiBhdmFpbGFibGUgYnV0IHN0aWxsIGxvYWRpbmcuLi4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuZ2V0U3RhdGUoKTtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoeyBpc1Zpc2libGU6IHRydWUgfSk7XG4gIH0sIHN0YXRlLmFmdGVyRGVsYXkgKiAxMDAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9zZVNwb3RDaGVjayA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0cmFjZUlkOiBzdGF0ZS50cmFjZUlkLFxuICAgICAgdHJpZ2dlclRva2VuOiBzdGF0ZS50cmlnZ2VyVG9rZW4sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svZGlzbWlzcy8ke3N0YXRlLnNwb3RjaGVja0NvbnRhY3RJRH1gLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBKU09OOicsIGVycm9yKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVN1cnZleUVuZCA9ICgpID0+IHtcbiAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gIGNvbnN0IHdlYlZpZXdSZWYgPVxuICAgIHN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjaGF0J1xuICAgICAgPyBzdGF0ZS5jaGF0V2ViVmlld1JlZlxuICAgICAgOiBzdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcblxuICB3ZWJWaWV3UmVmPy5jdXJyZW50Py5pbmplY3RKYXZhU2NyaXB0KGBcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudCgnbWVzc2FnZScsIHtcbiAgICAgICAgICBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHsgdHlwZTogJ1VOTU9VTlRfQVBQJyB9KX1cbiAgICAgICAgfSkpO1xuICAgICAgfSkoKTtcbiAgICBgKTtcblxuICBjb25zdCB1cGRhdGVkU3RhdGU6IFBhcnRpYWw8U3BvdGNoZWNrU3RhdGU+ID0ge1xuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgaXNDbG9zZUJ1dHRvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIGlzRnVsbFNjcmVlbk1vZGU6IGZhbHNlLFxuICAgIHNwb3RjaGVja0lEOiAwLFxuICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogMCxcbiAgICBjbG9zZUJ1dHRvblN0eWxlOiB7fSxcbiAgICBzcG90Y2hlY2tDb250YWN0SUQ6IDAsXG4gICAgc3BvdGNoZWNrVVJMOiAnJyxcbiAgICBzcG90Y2hlY2tQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgaXNNb3VudGVkOiBmYWxzZSxcbiAgICBzcG90Q2hlY2tUeXBlOiAnJyxcbiAgICBzY3JlZW5IZWlnaHQ6IDAsXG4gICAga2V5Qm9hcmRIZWlnaHQ6IDAsXG4gICAgdGV4dFBvc2l0aW9uOiAwLFxuICAgIHNwb3RDaGVja3NNb2RlOiAnJyxcbiAgICBhdmF0YXJFbmFibGVkOiBmYWxzZSxcbiAgICBhdmF0YXJVcmw6ICcnLFxuICB9O1xuXG4gIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh1cGRhdGVkU3RhdGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyA9IChzdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHsgXG4gIGxldCBzdHlsZXMgPSB7fVxuICBsZXQgd3JhcHBlclN0eWxlcyA9IHt9XG4gIGxldCBleHRyYVBhZGRpbmdGb3JNaW5pQ2FyZENsb3NlQnV0dG9uSWZUb3BQb3NpdGlvbiA9IDA7XG4gIGlmIChzdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlICYmIHN0YXRlLmlzVmlzaWJsZSkge1xuICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9O1xuICAgIHN0eWxlcyA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgIH07XG4gIH1cblxuICBsZXQgbWFyZ2luQm90dG9tID0gIGdsb2JhbE9TICE9PSAnaW9zJyA/IDE4IDogMDtcbiAgXG4gIGlmIChzdGF0ZS5pc1Zpc2libGUgJiYgc3RhdGUuaXNNb3VudGVkKSB7XG5cbiAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4oc3RhdGUuY3VycmVudFF1ZXN0aW9uSGVpZ2h0LCAoc3RhdGUubWF4SGVpZ2h0ICogd2luZG93LmlubmVySGVpZ2h0KSk7XG4gICAgaWYoc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcpIHtcbiAgICAgIGlmKHN0YXRlLmF2YXRhckVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNTY7XG4gICAgICAgIGlmKHN0YXRlLnNwb3RjaGVja1Bvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICAgIG1hcmdpbkJvdHRvbSArPSA1NjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGF0ZS5zcG90Y2hlY2tQb3NpdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzogIFxuICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0KydweCcsXG4gICAgICAgIH07XG4gICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgc3R5bGVzID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQrJ3B4JyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYoc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcgJiYgc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIGV4dHJhUGFkZGluZ0Zvck1pbmlDYXJkQ2xvc2VCdXR0b25JZlRvcFBvc2l0aW9uID0gMzA7XG4gICAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgICAgICBcbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCsncHgnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgd3JhcHBlclN0eWxlcyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB7XG4gICAgd3JhcHBlclN0eWxlczoge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsIFxuICAgICAgd2lkdGg6ICcxMDAlJywgXG4gICAgICBoZWlnaHQ6ICcxMDAlJywgXG4gICAgICB0b3A6ICcwJywgXG4gICAgICBsZWZ0OiAnMCcsIFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjMpJywgXG4gICAgICB6SW5kZXg6ICcxMDAwMDEnLFxuICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAuLi53cmFwcGVyU3R5bGVzXG4gICAgfSxcbiAgICBzdHlsZXM6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgcGFkZGluZ1RvcDogZXh0cmFQYWRkaW5nRm9yTWluaUNhcmRDbG9zZUJ1dHRvbklmVG9wUG9zaXRpb24rJ3B4JyxcbiAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tKydweCcsXG4gICAgICAuLi5zdHlsZXMsXG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb3NlU3BvdENoZWNrQW5kSGFuZGxlU3VydmV5RW5kID0gYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBjbG9zZVNwb3RDaGVjaygpO1xuICBoYW5kbGVTdXJ2ZXlFbmQoKTtcbn07Il19
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2tzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRSxJQUFJLDJCQUFrRCxDQUFDO0FBQ3ZELElBQUksUUFBUSxHQUFrQixJQUFJLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBMEIsRUFBRTtJQUNsRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNqQywyQkFBMkIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUNELE9BQU8sMkJBQTJCLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQzNDLE9BQU8sQ0FDTCxJQUFJLEtBQUssZ0JBQWdCO1FBQ3pCLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksS0FBSyxVQUFVLENBQ3BCLENBQUM7QUFDSixDQUFDLENBQUM7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RUFBRSxvQkFBb0I7WUFDckMsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLE1BQU07WUFDZixhQUFhLEVBQUUsUUFBUTtZQUN2QixHQUFHLGFBQWE7U0FDakI7UUFDRCxNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSwrQ0FBK0MsR0FBQyxJQUFJO1lBQ2hFLFlBQVksRUFBRSxZQUFZLEdBQUMsSUFBSTtZQUMvQixHQUFHLE1BQU07U0FDVjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6RCxlQUFlLEVBQUUsQ0FBQztBQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IERldmljZSB9IGZyb20gJ0BjYXBhY2l0b3IvZGV2aWNlJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgU3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9TcG90Y2hlY2tTdGF0ZVNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0U3BvdENoZWNrRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vU3BvdENoZWNrRXZlbnRMaXN0ZW5lcic7XG5cbmxldCBnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2U6IFNwb3RjaGVja1N0YXRlU2VydmljZTtcbmxldCBnbG9iYWxPUzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSAoKTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0+IHtcbiAgaWYgKCFnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2UpIHtcbiAgICBnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSBuZXcgU3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIH1cbiAgcmV0dXJuIGdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRyYWNlSWQoKSB7XG4gIGNvbnN0IHV1aWRTdHJpbmcgPSB1dWlkdjQoKTtcbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIGAke3V1aWRTdHJpbmd9LSR7dGltZXN0YW1wfWA7XG59XG5cbmV4cG9ydCBjb25zdCBpc2NoYXRTdXJ2ZXkgPSAodHlwZTogU3RyaW5nKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZSA9PT0gJ0NvbnZlcnNhdGlvbmFsJyB8fFxuICAgIHR5cGUgPT09ICdDRVNDaGF0JyB8fFxuICAgIHR5cGUgPT09ICdOUFNDaGF0JyB8fFxuICAgIHR5cGUgPT09ICdDU0FUQ2hhdCdcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPUyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgaW5mbyA9IGF3YWl0IERldmljZS5nZXRJbmZvKCk7XG4gIGdsb2JhbE9TID0gaW5mby5vcGVyYXRpbmdTeXN0ZW07XG4gIHJldHVybiBnbG9iYWxPUztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBcHBlYXJhbmNlID0gYXN5bmMgKFxuICByZXNwb25zZUpzb246IGFueSxcbiAgc2NyZWVuOiBzdHJpbmcsXG4gIGRvbWFpbk5hbWU6IHN0cmluZyxcbiAgdHJhY2VJZDogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT5cbikgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNwb3RjaGVja1N0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIGxldCBzdGF0ZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuXG4gICAgaWYgKHJlc3BvbnNlSnNvbikge1xuICAgICAgY29uc3QgY3VycmVudFNwb3RjaGVjayA9IHN0YXRlLmZpbHRlcmVkU3BvdENoZWNrcy5maW5kKFxuICAgICAgICAoc3BvdGNoZWNrKSA9PlxuICAgICAgICAgIHNwb3RjaGVja1snaWQnXSA9PT0gcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tJZCB8fFxuICAgICAgICAgIHNwb3RjaGVja1snaWQnXSA9PT0gcmVzcG9uc2VKc29uPy5pZFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXBwZWFyYW5jZSA9IHJlc3BvbnNlSnNvbj8uYXBwZWFyYW5jZTtcbiAgICAgIGxldCBjaGF0ID0gZmFsc2U7XG5cbiAgICAgIGxldCB1cGRhdGVkU3RhdGU6IFBhcnRpYWw8U3BvdGNoZWNrU3RhdGU+ID0ge307XG5cbiAgICAgIGlmIChhcHBlYXJhbmNlKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICBjbG9zZUJ1dHRvbixcbiAgICAgICAgICBjb2xvcnMsXG4gICAgICAgICAgY2FyZFByb3BlcnRpZXMsXG4gICAgICAgICAgbW9kZSxcbiAgICAgICAgICBiYW5uZXJJbWFnZSxcbiAgICAgICAgfSA9IGFwcGVhcmFuY2U7XG4gICAgICAgIGNvbnN0IHsgbWF4SGVpZ2h0IH0gPSBjYXJkUHJvcGVydGllcyB8fCB7fTtcblxuICAgICAgICB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgICAgc3BvdGNoZWNrUG9zaXRpb246XG4gICAgICAgICAgICBwb3NpdGlvbiA9PT0gJ3RvcF9mdWxsJyB8fCBwb3NpdGlvbiA9PT0gJ2NlbnRlcl90b3AnXG4gICAgICAgICAgICAgID8gJ3RvcCdcbiAgICAgICAgICAgICAgOiBwb3NpdGlvbiA9PT0gJ2NlbnRlcl9jZW50ZXInXG4gICAgICAgICAgICAgID8gJ2NlbnRlcidcbiAgICAgICAgICAgICAgOiAnYm90dG9tJyxcbiAgICAgICAgICBpc0Nsb3NlQnV0dG9uRW5hYmxlZDogY2xvc2VCdXR0b24gPz8gdHJ1ZSxcbiAgICAgICAgICBjbG9zZUJ1dHRvblN0eWxlOiBjb2xvcnM/Lm92ZXJyaWRlcyA/PyB7fSxcbiAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCA/IHBhcnNlRmxvYXQobWF4SGVpZ2h0KSAvIDEwMCA6IDAsXG4gICAgICAgICAgc3BvdENoZWNrVHlwZTpcbiAgICAgICAgICAgIGlzY2hhdFN1cnZleShjdXJyZW50U3BvdGNoZWNrPy5bJ3N1cnZleSddPy5zdXJ2ZXlUeXBlKSAmJlxuICAgICAgICAgICAgbW9kZSA9PT0gJ2Z1bGxTY3JlZW4nXG4gICAgICAgICAgICAgID8gJ2NoYXQnXG4gICAgICAgICAgICAgIDogJ2NsYXNzaWMnLFxuICAgICAgICAgIGlzRnVsbFNjcmVlbk1vZGU6IG1vZGUgPT09ICdmdWxsU2NyZWVuJyxcbiAgICAgICAgICBpc0Jhbm5lckltYWdlT246IGJhbm5lckltYWdlPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICAgIHNwb3RDaGVja3NNb2RlOiBtb2RlLFxuICAgICAgICAgIGF2YXRhckVuYWJsZWQ6IGFwcGVhcmFuY2U/LmF2YXRhcj8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgICBhdmF0YXJVcmw6IGFwcGVhcmFuY2U/LmF2YXRhcj8uYXZhdGFyVXJsID8/ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNoYXQgPSB1cGRhdGVkU3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzcG90Q2hlY2tJZCA9IHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrSWQgPz8gMDtcbiAgICAgIGNvbnN0IHNwb3RDaGVja0NvbnRhY3RJZCA9XG4gICAgICAgIHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrQ29udGFjdElkID8/XG4gICAgICAgIHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrQ29udGFjdD8uaWQgPz9cbiAgICAgICAgMDtcbiAgICAgIGNvbnN0IHRyaWdnZXJUb2tlbiA9IHJlc3BvbnNlSnNvbj8udHJpZ2dlclRva2VuID8/ICcnO1xuXG4gICAgICB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgIC4uLnVwZGF0ZWRTdGF0ZSxcbiAgICAgICAgc3BvdGNoZWNrSUQ6IHNwb3RDaGVja0lkLFxuICAgICAgICBzcG90Y2hlY2tDb250YWN0SUQ6IHNwb3RDaGVja0NvbnRhY3RJZCxcbiAgICAgICAgdHJpZ2dlclRva2VuLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYmFzZVNwb3RjaGVja1VSTCA9IGBodHRwczovLyR7ZG9tYWluTmFtZX0vcy9zcG90Y2hlY2svJHt0cmlnZ2VyVG9rZW59LyR7XG4gICAgICAgIGNoYXQgPyAnY29uZmlnJyA6ICdib290c3RyYXAnXG4gICAgICB9P3Nwb3RjaGVja0NvbnRhY3RJZD0ke3Nwb3RDaGVja0NvbnRhY3RJZH0mdHJhY2VJZD0ke3RyYWNlSWR9JnNwb3RjaGVja1VybD0ke3NjcmVlbn1gO1xuXG4gICAgICBsZXQgZnVsbFNwb3RjaGVja1VSTCA9IGJhc2VTcG90Y2hlY2tVUkw7XG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGZ1bGxTcG90Y2hlY2tVUkwgKz0gYCYke2tleX09JHt2YWx1ZX1gO1xuICAgICAgfSk7XG5cbiAgICAgIHVwZGF0ZWRTdGF0ZS5zcG90Y2hlY2tVUkwgPSBmdWxsU3BvdGNoZWNrVVJMO1xuICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHVwZGF0ZWRTdGF0ZSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0PGFueT4oZnVsbFNwb3RjaGVja1VSTCk7XG4gICAgICAgIGNvbnN0IHRoZW1lSW5mbyA9IHJlc3BvbnNlLmRhdGE/LmNvbmZpZz8uZ2VuZXJhdGVkQ1NTO1xuICAgICAgICBjb25zdCB0aGVtZV9wYXlsb2FkID0geyB0eXBlOiAnVEhFTUVfVVBEQVRFX1NQT1RDSEVDSycsIHRoZW1lSW5mbyB9O1xuICAgICAgICBzdGF0ZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuXG4gICAgICAgIGxldCB3ZWJWaWV3UmVmID0gY2hhdCA/IHN0YXRlLmNoYXRXZWJWaWV3UmVmIDogc3RhdGUuY2xhc3NpY1dlYlZpZXdSZWY7XG4gICAgICAgIGxldCBpc0xvYWRpbmcgPSBjaGF0ID8gc3RhdGUuaXNDaGF0TG9hZGluZyB8fCAhc3RhdGUuaXNDaGF0TG9hZEV2ZW50UmVjZWl2ZWQgOiBzdGF0ZS5pc0NsYXNzaWNMb2FkaW5nIHx8ICFzdGF0ZS5pc0NsYXNzaWNMb2FkRXZlbnRSZWNlaXZlZDtcblxuICAgICAgICBjb25zdCByZXNldFN0YXRlRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiAnUkVTRVRfU1RBVEUnLFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAuLi4ocmVzcG9uc2UuZGF0YSB8fCB7fSksXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgICAgc3BvdENoZWNrQXBwZWFyYW5jZToge1xuICAgICAgICAgICAgICAuLi4oYXBwZWFyYW5jZSB8fCB7fSksXG4gICAgICAgICAgICAgIHRhcmdldFR5cGU6ICdNT0JJTEUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNwb3RjaGVja1VybDogc2NyZWVuLFxuICAgICAgICAgICAgdHJhY2VJZCxcbiAgICAgICAgICAgIGVsZW1lbnRCdWlsZGVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgIC4uLih2YXJpYWJsZXMgfHwge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlVG9JZnJhbWUgPSAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGlmcmFtZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoZGF0YSwgJyonKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvIGlmcmFtZTonLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbW11bmljYXRlV2l0aFdlYlZpZXcgPSBhc3luYyAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZW5kTWVzc2FnZVRvSWZyYW1lKGlmcmFtZSwgcmVzZXRTdGF0ZURhdGEpO1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb0lmcmFtZShpZnJhbWUsIHRoZW1lX3BheWxvYWQpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9LCAyMDAwKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHdlYlZpZXdSZWYpIHtcbiAgICAgICAgICBpZiAoaXNMb2FkaW5nID09PSBmYWxzZSkge1xuICAgICAgICAgICAgY29tbXVuaWNhdGVXaXRoV2ViVmlldyh3ZWJWaWV3UmVmKTtcbiAgICAgICAgICAgIHN0YXJ0KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdG9kbzogcmVjaGVjayB0aGlzXG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgaXNDaGF0TG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIGlzQ2xhc3NpY0xvYWRpbmcsXG4gICAgICAgICAgICAgICAgICBjaGF0V2ViVmlld1JlZixcbiAgICAgICAgICAgICAgICAgIGNsYXNzaWNXZWJWaWV3UmVmLFxuICAgICAgICAgICAgICAgICAgaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBpc0NoYXRMb2FkRXZlbnRSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICB9ID0gY3VycmVudFN0YXRlO1xuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCghaXNDaGF0TG9hZGluZyAmJiBjaGF0ICYmIGlzQ2hhdExvYWRFdmVudFJlY2VpdmVkKSB8fCAoIWlzQ2xhc3NpY0xvYWRpbmcgJiYgIWNoYXQgJiYgaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQpKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlV2ViVmlld1JlZiA9IGNoYXRcbiAgICAgICAgICAgICAgICAgICAgPyBjaGF0V2ViVmlld1JlZlxuICAgICAgICAgICAgICAgICAgICA6IGNsYXNzaWNXZWJWaWV3UmVmO1xuICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVdlYlZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGVXaXRoV2ViVmlldyhhY3RpdmVXZWJWaWV3UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAn4pqg77iPIEFjdGl2ZSBXZWJWaWV3IHJlZiBpcyBudWxsIGFmdGVyIGxvYWRpbmcgY29tcGxldGVkJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZVdlYlZpZXcgPSBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFdlYlZpZXdSZWYgPSBjaGF0XG4gICAgICAgICAgICAgICAgPyBjdXJyZW50U3RhdGUuY2hhdFdlYlZpZXdSZWZcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRTdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZElzTG9hZGluZyA9IGNoYXRcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnRTdGF0ZS5pc0NoYXRMb2FkaW5nIHx8ICFjdXJyZW50U3RhdGUuaXNDaGF0TG9hZEV2ZW50UmVjZWl2ZWRcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRTdGF0ZS5pc0NsYXNzaWNMb2FkaW5nIHx8ICFjdXJyZW50U3RhdGUuaXNDbGFzc2ljTG9hZEV2ZW50UmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRXZWJWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVkSXNMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZVdlYlZpZXcudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRlV2l0aFdlYlZpZXcodXBkYXRlZFdlYlZpZXdSZWYpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KPsyBXZWJWaWV3IHJlZiBhdmFpbGFibGUgYnV0IHN0aWxsIGxvYWRpbmcuLi4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuZ2V0U3RhdGUoKTtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoeyBpc1Zpc2libGU6IHRydWUgfSk7XG4gIH0sIHN0YXRlLmFmdGVyRGVsYXkgKiAxMDAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9zZVNwb3RDaGVjayA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0cmFjZUlkOiBzdGF0ZS50cmFjZUlkLFxuICAgICAgdHJpZ2dlclRva2VuOiBzdGF0ZS50cmlnZ2VyVG9rZW4sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svZGlzbWlzcy8ke3N0YXRlLnNwb3RjaGVja0NvbnRhY3RJRH1gLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICB9XG4gICAgKTtcbiAgICBpZihyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICBnZXRTcG90Q2hlY2tFdmVudExpc3RlbmVyKCkuZW1pdCgnc3VydmV5RGlzbWlzc2VkJyk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBjb25zb2xlLmxvZyhgRXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBKU09OOicsIGVycm9yKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVN1cnZleUVuZCA9ICgpID0+IHtcbiAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gIGNvbnN0IHdlYlZpZXdSZWYgPVxuICAgIHN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjaGF0J1xuICAgICAgPyBzdGF0ZS5jaGF0V2ViVmlld1JlZlxuICAgICAgOiBzdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcblxuICB3ZWJWaWV3UmVmPy5jdXJyZW50Py5pbmplY3RKYXZhU2NyaXB0KGBcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudCgnbWVzc2FnZScsIHtcbiAgICAgICAgICBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHsgdHlwZTogJ1VOTU9VTlRfQVBQJyB9KX1cbiAgICAgICAgfSkpO1xuICAgICAgfSkoKTtcbiAgICBgKTtcblxuICBjb25zdCB1cGRhdGVkU3RhdGU6IFBhcnRpYWw8U3BvdGNoZWNrU3RhdGU+ID0ge1xuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgaXNDbG9zZUJ1dHRvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIGlzRnVsbFNjcmVlbk1vZGU6IGZhbHNlLFxuICAgIHNwb3RjaGVja0lEOiAwLFxuICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogMCxcbiAgICBjbG9zZUJ1dHRvblN0eWxlOiB7fSxcbiAgICBzcG90Y2hlY2tDb250YWN0SUQ6IDAsXG4gICAgc3BvdGNoZWNrVVJMOiAnJyxcbiAgICBzcG90Y2hlY2tQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgaXNNb3VudGVkOiBmYWxzZSxcbiAgICBzcG90Q2hlY2tUeXBlOiAnJyxcbiAgICBzY3JlZW5IZWlnaHQ6IDAsXG4gICAga2V5Qm9hcmRIZWlnaHQ6IDAsXG4gICAgdGV4dFBvc2l0aW9uOiAwLFxuICAgIHNwb3RDaGVja3NNb2RlOiAnJyxcbiAgICBhdmF0YXJFbmFibGVkOiBmYWxzZSxcbiAgICBhdmF0YXJVcmw6ICcnLFxuICB9O1xuXG4gIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh1cGRhdGVkU3RhdGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyA9IChzdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHsgXG4gIGxldCBzdHlsZXMgPSB7fVxuICBsZXQgd3JhcHBlclN0eWxlcyA9IHt9XG4gIGxldCBleHRyYVBhZGRpbmdGb3JNaW5pQ2FyZENsb3NlQnV0dG9uSWZUb3BQb3NpdGlvbiA9IDA7XG4gIGlmIChzdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlICYmIHN0YXRlLmlzVmlzaWJsZSkge1xuICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9O1xuICAgIHN0eWxlcyA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgIH07XG4gIH1cblxuICBsZXQgbWFyZ2luQm90dG9tID0gIGdsb2JhbE9TICE9PSAnaW9zJyA/IDE4IDogMDtcbiAgXG4gIGlmIChzdGF0ZS5pc1Zpc2libGUgJiYgc3RhdGUuaXNNb3VudGVkKSB7XG5cbiAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4oc3RhdGUuY3VycmVudFF1ZXN0aW9uSGVpZ2h0LCAoc3RhdGUubWF4SGVpZ2h0ICogd2luZG93LmlubmVySGVpZ2h0KSk7XG4gICAgaWYoc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcpIHtcbiAgICAgIGlmKHN0YXRlLmF2YXRhckVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNTY7XG4gICAgICAgIGlmKHN0YXRlLnNwb3RjaGVja1Bvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICAgIG1hcmdpbkJvdHRvbSArPSA1NjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGF0ZS5zcG90Y2hlY2tQb3NpdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzogIFxuICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0KydweCcsXG4gICAgICAgIH07XG4gICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgc3R5bGVzID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQrJ3B4JyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYoc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcgJiYgc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIGV4dHJhUGFkZGluZ0Zvck1pbmlDYXJkQ2xvc2VCdXR0b25JZlRvcFBvc2l0aW9uID0gMzA7XG4gICAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgICAgICBcbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCsncHgnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgd3JhcHBlclN0eWxlcyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB7XG4gICAgd3JhcHBlclN0eWxlczoge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsIFxuICAgICAgd2lkdGg6ICcxMDAlJywgXG4gICAgICBoZWlnaHQ6ICcxMDAlJywgXG4gICAgICB0b3A6ICcwJywgXG4gICAgICBsZWZ0OiAnMCcsIFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjMpJywgXG4gICAgICB6SW5kZXg6ICcxMDAwMDEnLFxuICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAuLi53cmFwcGVyU3R5bGVzXG4gICAgfSxcbiAgICBzdHlsZXM6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgcGFkZGluZ1RvcDogZXh0cmFQYWRkaW5nRm9yTWluaUNhcmRDbG9zZUJ1dHRvbklmVG9wUG9zaXRpb24rJ3B4JyxcbiAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tKydweCcsXG4gICAgICAuLi5zdHlsZXMsXG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb3NlU3BvdENoZWNrQW5kSGFuZGxlU3VydmV5RW5kID0gYXN5bmMgKCkgPT4ge1xuICBoYW5kbGVTdXJ2ZXlFbmQoKTtcbn07Il19
@@ -1,2 +1,3 @@
1
1
  export { initializeSpotChecks, trackScreen, trackEvent } from './SpotCheck';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5ndWxhci11aS9saWIvc3BvdGNoZWNrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGluaXRpYWxpemVTcG90Q2hlY2tzLCB0cmFja1NjcmVlbiwgdHJhY2tFdmVudCB9IGZyb20gJy4vU3BvdENoZWNrJztcbmV4cG9ydCB0eXBlIHtcbiAgVXNlckRldGFpbHMsXG4gIFZhcmlhYmxlcyxcbiAgQ3VzdG9tUHJvcGVydGllcyxcbiAgVHJhY2tTY3JlZW5Qcm9wcyxcbiAgVHJhY2tFdmVudFByb3BzLFxuICBJbml0aWFsaXplU3BvdENoZWNrc1Byb3BzLFxufSBmcm9tICcuL3R5cGVzJztcbiJdfQ==
2
+ export { addSpotCheckListener, } from './SpotCheckEventListener';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5ndWxhci11aS9saWIvc3BvdGNoZWNrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsb0JBQW9CLEdBQ3JCLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpbml0aWFsaXplU3BvdENoZWNrcywgdHJhY2tTY3JlZW4sIHRyYWNrRXZlbnQgfSBmcm9tICcuL1Nwb3RDaGVjayc7XG5leHBvcnQge1xuICBhZGRTcG90Q2hlY2tMaXN0ZW5lcixcbn0gZnJvbSAnLi9TcG90Q2hlY2tFdmVudExpc3RlbmVyJztcbmV4cG9ydCB0eXBlIHtcbiAgVXNlckRldGFpbHMsXG4gIFZhcmlhYmxlcyxcbiAgQ3VzdG9tUHJvcGVydGllcyxcbiAgVHJhY2tTY3JlZW5Qcm9wcyxcbiAgVHJhY2tFdmVudFByb3BzLFxuICBJbml0aWFsaXplU3BvdENoZWNrc1Byb3BzLFxufSBmcm9tICcuL3R5cGVzJztcbiJdfQ==
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
5
5
  import { v4 } from 'uuid';
6
6
  import { Device } from '@capacitor/device';
7
7
  import axios from 'axios';
8
- import { BehaviorSubject } from 'rxjs';
8
+ import { BehaviorSubject, Subject } from 'rxjs';
9
9
  import * as i1 from '@angular/platform-browser';
10
10
 
11
11
  class SpotcheckStateService {
@@ -72,6 +72,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
72
72
  }]
73
73
  }] });
74
74
 
75
+ class SpotCheckEventListenerService {
76
+ eventSubject = new Subject();
77
+ event$ = this.eventSubject.asObservable();
78
+ emit(type, data) {
79
+ this.eventSubject.next({ type, data });
80
+ }
81
+ addListener(eventType, callback) {
82
+ return this.event$.subscribe((event) => {
83
+ if (event.type === eventType) {
84
+ callback(event.data);
85
+ }
86
+ });
87
+ }
88
+ }
89
+ let globalInstance;
90
+ const getSpotCheckEventListener = () => {
91
+ if (!globalInstance) {
92
+ globalInstance = new SpotCheckEventListenerService();
93
+ }
94
+ return globalInstance;
95
+ };
96
+ const addSpotCheckListener = (eventType, callback) => {
97
+ return getSpotCheckEventListener().addListener(eventType, callback);
98
+ };
99
+
75
100
  let globalSpotcheckStateService;
76
101
  let globalOS = null;
77
102
  const getSpotcheckStateService = () => {
@@ -268,7 +293,10 @@ const closeSpotCheck = async () => {
268
293
  },
269
294
  body: JSON.stringify(payload),
270
295
  });
271
- if (response.status != 200) {
296
+ if (response.status == 200) {
297
+ getSpotCheckEventListener().emit('surveyDismissed');
298
+ }
299
+ else {
272
300
  console.log(`Error: ${response.status}`);
273
301
  }
274
302
  }
@@ -399,19 +427,22 @@ const getSpotcheckComponentCssStyles = (state) => {
399
427
  };
400
428
  };
401
429
  const closeSpotCheckAndHandleSurveyEnd = async () => {
402
- await closeSpotCheck();
403
430
  handleSurveyEnd();
404
431
  };
405
432
 
406
433
  class WebViewComponent {
407
434
  sanitizer;
435
+ ngZone;
436
+ cdr;
408
437
  url = '';
409
438
  webviewType = 'classic';
410
439
  isMiniCard = false;
411
440
  safeUrl = null;
412
441
  iframe;
413
- constructor(sanitizer) {
442
+ constructor(sanitizer, ngZone, cdr) {
414
443
  this.sanitizer = sanitizer;
444
+ this.ngZone = ngZone;
445
+ this.cdr = cdr;
415
446
  }
416
447
  ngOnInit() {
417
448
  if (this.url) {
@@ -438,14 +469,16 @@ class WebViewComponent {
438
469
  setupIframeLoadListener() {
439
470
  const iframe = this.iframe.nativeElement;
440
471
  iframe.addEventListener('load', () => {
441
- this.injectNativeBridgeAdapters(iframe);
442
- const stateService = getSpotcheckStateService();
443
- if (this.webviewType === 'classic') {
444
- stateService.setState({ isClassicLoading: false });
445
- }
446
- else {
447
- stateService.setState({ isChatLoading: false });
448
- }
472
+ this.ngZone.run(() => {
473
+ this.injectNativeBridgeAdapters(iframe);
474
+ const stateService = getSpotcheckStateService();
475
+ if (this.webviewType === 'classic') {
476
+ stateService.setState({ isClassicLoading: false });
477
+ }
478
+ else {
479
+ stateService.setState({ isChatLoading: false });
480
+ }
481
+ });
449
482
  });
450
483
  }
451
484
  injectNativeBridgeAdapters(iframe) {
@@ -488,44 +521,49 @@ class WebViewComponent {
488
521
  }
489
522
  }
490
523
  onMessage(event) {
491
- const stateService = getSpotcheckStateService();
492
- const { data } = event;
493
- switch (data.type) {
494
- case 'slideInFrame':
495
- if (data.mounted) {
496
- stateService.setState({ isMounted: true });
497
- }
498
- break;
499
- case 'resizeWindow':
500
- if (data.size) {
501
- stateService.setState({
502
- currentQuestionHeight: data.size.height,
503
- });
504
- }
505
- else if (data.isCloseButtonEnabled) {
506
- stateService.setState({
507
- isCloseButtonEnabled: data.isCloseButtonEnabled,
524
+ this.ngZone.run(() => {
525
+ const stateService = getSpotcheckStateService();
526
+ const { data } = event;
527
+ switch (data.type) {
528
+ case 'slideInFrame':
529
+ if (data.mounted) {
530
+ stateService.setState({ isMounted: true });
531
+ }
532
+ break;
533
+ case 'resizeWindow':
534
+ if (data.size) {
535
+ stateService.setState({
536
+ currentQuestionHeight: data.size.height,
537
+ });
538
+ }
539
+ else if (data.isCloseButtonEnabled) {
540
+ stateService.setState({
541
+ isCloseButtonEnabled: data.isCloseButtonEnabled,
542
+ });
543
+ }
544
+ break;
545
+ case 'surveyCompleted':
546
+ closeSpotCheckAndHandleSurveyEnd().then(() => {
547
+ getSpotCheckEventListener().emit('surveyCompleted', data.response);
548
+ this.cdr.detectChanges();
508
549
  });
509
- }
510
- break;
511
- case 'surveyCompleted':
512
- closeSpotCheckAndHandleSurveyEnd();
513
- // spotchecksListener.emitSurveyCompleted(data.response);
514
- break;
515
- case 'surveyLoadStarted':
516
- // spotchecksListener.emitSurveyLoadStarted(data.surveyDetails);
517
- break;
518
- case 'classicLoadEvent':
519
- stateService.setState({ isClassicLoadEventReceived: true });
520
- break;
521
- case 'chatLoadEvent':
522
- stateService.setState({ isChatLoadEventReceived: true });
523
- break;
524
- default:
525
- break;
526
- }
550
+ break;
551
+ case 'surveyLoadStarted':
552
+ getSpotCheckEventListener().emit('surveyLoadStarted', data.surveyDetails);
553
+ break;
554
+ case 'classicLoadEvent':
555
+ stateService.setState({ isClassicLoadEventReceived: true });
556
+ break;
557
+ case 'chatLoadEvent':
558
+ stateService.setState({ isChatLoadEventReceived: true });
559
+ break;
560
+ default:
561
+ break;
562
+ }
563
+ this.cdr.detectChanges();
564
+ });
527
565
  }
528
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
566
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
529
567
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType", isMiniCard: "isMiniCard" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
530
568
  <div style="overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;">
531
569
  <iframe
@@ -560,7 +598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
560
598
  standalone: true,
561
599
  imports: [CommonModule],
562
600
  }]
563
- }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { url: [{
601
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { url: [{
564
602
  type: Input
565
603
  }], webviewType: [{
566
604
  type: Input
@@ -628,6 +666,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
628
666
  type: Input
629
667
  }] } });
630
668
  class CloseButtonComponent {
669
+ ngZone;
670
+ cdr;
631
671
  size = 30;
632
672
  strokeWidth = 1.2;
633
673
  state;
@@ -636,13 +676,18 @@ class CloseButtonComponent {
636
676
  isVisible = false;
637
677
  isMiniCard = false;
638
678
  stroke = 'black';
639
- constructor() {
679
+ constructor(ngZone, cdr) {
680
+ this.ngZone = ngZone;
681
+ this.cdr = cdr;
640
682
  this.stateService = getSpotcheckStateService();
641
683
  this.state = this.stateService.getState();
642
684
  this.updateComponentState();
643
685
  this.stateSubscription = this.stateService.state$.subscribe((newState) => {
644
- this.state = newState;
645
- this.updateComponentState();
686
+ this.ngZone.run(() => {
687
+ this.state = newState;
688
+ this.updateComponentState();
689
+ this.cdr.detectChanges();
690
+ });
646
691
  });
647
692
  }
648
693
  ngOnDestroy() {
@@ -665,8 +710,11 @@ class CloseButtonComponent {
665
710
  onClick = async () => {
666
711
  await closeSpotCheck();
667
712
  handleSurveyEnd();
713
+ this.ngZone.run(() => {
714
+ this.cdr.detectChanges();
715
+ });
668
716
  };
669
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
717
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseButtonComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
670
718
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: CloseButtonComponent, isStandalone: true, selector: "spotcheck-close-button", inputs: { size: "size", strokeWidth: "strokeWidth" }, ngImport: i0, template: `
671
719
  <div style="position: absolute; top: -36px; right: 16px; z-index: 100001; cursor: pointer; background-color: white; border-radius: 50px;" (click)="onClick()" *ngIf="isVisible && isMiniCard">
672
720
  <close-svg [size]="size" [stroke]="stroke" [strokeWidth]="strokeWidth" style="display: flex; align-items: center; justify-content: center;"/>
@@ -691,25 +739,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
691
739
  standalone: true,
692
740
  imports: [CommonModule, CloseSVGComponent],
693
741
  }]
694
- }], ctorParameters: () => [], propDecorators: { size: [{
742
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { size: [{
695
743
  type: Input
696
744
  }], strokeWidth: [{
697
745
  type: Input
698
746
  }] } });
699
747
  class SpotCheckComponent {
748
+ ngZone;
749
+ cdr;
700
750
  state;
701
751
  spotcheckStateService;
702
752
  stateSubscription;
703
753
  componentStyles = {};
704
754
  avatarUrl = '';
705
- constructor() {
755
+ constructor(ngZone, cdr) {
756
+ this.ngZone = ngZone;
757
+ this.cdr = cdr;
706
758
  this.spotcheckStateService = getSpotcheckStateService();
707
759
  this.state = this.spotcheckStateService.getState();
708
760
  this.updateComponentStyles();
709
761
  this.stateSubscription = this.spotcheckStateService.state$.subscribe((newState) => {
710
- this.state = newState;
711
- this.updateComponentStyles();
712
- this.avatarUrl = this.state.avatarUrl || "https://static.surveysparrow.com/application/images/profile.png";
762
+ this.ngZone.run(() => {
763
+ this.state = newState;
764
+ this.updateComponentStyles();
765
+ this.avatarUrl = this.state.avatarUrl || "https://static.surveysparrow.com/application/images/profile.png";
766
+ this.cdr.detectChanges();
767
+ });
713
768
  });
714
769
  }
715
770
  ngOnInit() {
@@ -758,13 +813,13 @@ class SpotCheckComponent {
758
813
  console.log('Error initializing widget:', JSON.stringify(error));
759
814
  }
760
815
  };
761
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
816
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
762
817
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType", "isMiniCard"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
763
818
  }
764
819
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, decorators: [{
765
820
  type: Component,
766
821
  args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"] }]
767
- }], ctorParameters: () => [] });
822
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
768
823
 
769
824
  class SpotCheck {
770
825
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheck, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -1066,5 +1121,5 @@ const trackEvent = async ({ screen, event }) => {
1066
1121
  * Generated bundle index. Do not edit.
1067
1122
  */
1068
1123
 
1069
- export { SpotCheck, initializeSpotChecks, trackEvent, trackScreen };
1124
+ export { SpotCheck, addSpotCheckListener, initializeSpotChecks, trackEvent, trackScreen };
1070
1125
  //# sourceMappingURL=angular-ui.mjs.map