@servicetitan/dte-unlayer 0.157.0 → 0.159.0

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 (166) hide show
  1. package/dist/api-core.js +22 -29
  2. package/dist/api-core.js.map +1 -1
  3. package/dist/api-custom-tools.js +23 -29
  4. package/dist/api-custom-tools.js.map +1 -1
  5. package/dist/business-calendar/BusinessCalendarDrawer.d.ts +19 -0
  6. package/dist/business-calendar/BusinessCalendarDrawer.d.ts.map +1 -0
  7. package/dist/business-calendar/BusinessCalendarDrawer.js +41 -0
  8. package/dist/business-calendar/BusinessCalendarDrawer.js.map +1 -0
  9. package/dist/business-calendar/business-calendar-requests.d.ts +25 -0
  10. package/dist/business-calendar/business-calendar-requests.d.ts.map +1 -0
  11. package/dist/business-calendar/business-calendar-requests.js +46 -0
  12. package/dist/business-calendar/business-calendar-requests.js.map +1 -0
  13. package/dist/business-calendar/business-calendar-state.d.ts +22 -0
  14. package/dist/business-calendar/business-calendar-state.d.ts.map +1 -0
  15. package/dist/business-calendar/business-calendar-state.js +74 -0
  16. package/dist/business-calendar/business-calendar-state.js.map +1 -0
  17. package/dist/business-calendar/useBusinessCalendarRequests.d.ts +15 -0
  18. package/dist/business-calendar/useBusinessCalendarRequests.d.ts.map +1 -0
  19. package/dist/business-calendar/useBusinessCalendarRequests.js +30 -0
  20. package/dist/business-calendar/useBusinessCalendarRequests.js.map +1 -0
  21. package/dist/display-conditions/ConditionGroup.js +15 -89
  22. package/dist/display-conditions/ConditionGroup.js.map +1 -1
  23. package/dist/display-conditions/ConditionGroupsSection.js +2 -70
  24. package/dist/display-conditions/ConditionGroupsSection.js.map +1 -1
  25. package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
  26. package/dist/display-conditions/ConditionRow.js +71 -296
  27. package/dist/display-conditions/ConditionRow.js.map +1 -1
  28. package/dist/display-conditions/DisplayConditionModal.js +40 -190
  29. package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
  30. package/dist/display-conditions/LookupValueControl.d.ts.map +1 -1
  31. package/dist/display-conditions/LookupValueControl.js +42 -109
  32. package/dist/display-conditions/LookupValueControl.js.map +1 -1
  33. package/dist/display-conditions/SeparatorWithChip.js +1 -10
  34. package/dist/display-conditions/SeparatorWithChip.js.map +1 -1
  35. package/dist/display-conditions/constants.js +15 -20
  36. package/dist/display-conditions/constants.js.map +1 -1
  37. package/dist/display-conditions/displayConditionController.js +5 -8
  38. package/dist/display-conditions/displayConditionController.js.map +1 -1
  39. package/dist/display-conditions/lookupOptionsController.js +16 -16
  40. package/dist/display-conditions/lookupOptionsController.js.map +1 -1
  41. package/dist/display-conditions/nunjucks.js +98 -116
  42. package/dist/display-conditions/nunjucks.js.map +1 -1
  43. package/dist/display-conditions/schemaDataPoints.js +13 -11
  44. package/dist/display-conditions/schemaDataPoints.js.map +1 -1
  45. package/dist/display-conditions/types.js +23 -67
  46. package/dist/display-conditions/types.js.map +1 -1
  47. package/dist/display-conditions/useConditionForms.js +38 -56
  48. package/dist/display-conditions/useConditionForms.js.map +1 -1
  49. package/dist/display-conditions/useLookupOptions.js +24 -44
  50. package/dist/display-conditions/useLookupOptions.js.map +1 -1
  51. package/dist/e-sign-offset/ESignDateSignedOffsetModal.d.ts.map +1 -1
  52. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js +48 -156
  53. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js.map +1 -1
  54. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts +3 -1
  55. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts.map +1 -1
  56. package/dist/e-sign-offset/ESignOffsetRuleRow.js +12 -71
  57. package/dist/e-sign-offset/ESignOffsetRuleRow.js.map +1 -1
  58. package/dist/e-sign-offset/eSignOffsetController.js +5 -8
  59. package/dist/e-sign-offset/eSignOffsetController.js.map +1 -1
  60. package/dist/editor-core-source.d.ts +2 -2
  61. package/dist/editor-core-source.d.ts.map +1 -1
  62. package/dist/editor-core-source.js +3 -3
  63. package/dist/editor-core-source.js.map +1 -1
  64. package/dist/editor-core.js +2 -2
  65. package/dist/editor-core.js.map +1 -1
  66. package/dist/editor.d.ts.map +1 -1
  67. package/dist/editor.js +56 -118
  68. package/dist/editor.js.map +1 -1
  69. package/dist/image-upload-error.js +3 -3
  70. package/dist/image-upload-error.js.map +1 -1
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +0 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/loadScript.js +7 -8
  76. package/dist/loadScript.js.map +1 -1
  77. package/dist/log.js +2 -3
  78. package/dist/log.js.map +1 -1
  79. package/dist/merge-tags.js +18 -17
  80. package/dist/merge-tags.js.map +1 -1
  81. package/dist/shared/configs.js +1 -2
  82. package/dist/shared/configs.js.map +1 -1
  83. package/dist/shared/const.d.ts +72 -0
  84. package/dist/shared/const.d.ts.map +1 -1
  85. package/dist/shared/const.js +13 -4
  86. package/dist/shared/const.js.map +1 -1
  87. package/dist/shared/date-calc.d.ts +32 -13
  88. package/dist/shared/date-calc.d.ts.map +1 -1
  89. package/dist/shared/date-calc.js +130 -76
  90. package/dist/shared/date-calc.js.map +1 -1
  91. package/dist/shared/e-sign-offset.js +46 -63
  92. package/dist/shared/e-sign-offset.js.map +1 -1
  93. package/dist/shared/edit-icon.js +0 -1
  94. package/dist/shared/edit-icon.js.map +1 -1
  95. package/dist/shared/fonts.js +16 -17
  96. package/dist/shared/fonts.js.map +1 -1
  97. package/dist/shared/forms.js +16 -38
  98. package/dist/shared/forms.js.map +1 -1
  99. package/dist/shared/instance-id.d.ts +3 -0
  100. package/dist/shared/instance-id.d.ts.map +1 -1
  101. package/dist/shared/instance-id.js +10 -7
  102. package/dist/shared/instance-id.js.map +1 -1
  103. package/dist/shared/nunjucks-helpers.js +2 -5
  104. package/dist/shared/nunjucks-helpers.js.map +1 -1
  105. package/dist/shared/schema.js +52 -96
  106. package/dist/shared/schema.js.map +1 -1
  107. package/dist/shared/tools.js +6 -13
  108. package/dist/shared/tools.js.map +1 -1
  109. package/dist/store.d.ts +15 -1
  110. package/dist/store.d.ts.map +1 -1
  111. package/dist/store.js +851 -547
  112. package/dist/store.js.map +1 -1
  113. package/dist/tools.js +133 -143
  114. package/dist/tools.js.map +1 -1
  115. package/dist/unlayer-interface.d.ts +25 -1
  116. package/dist/unlayer-interface.d.ts.map +1 -1
  117. package/dist/unlayer-interface.js +1 -2
  118. package/dist/unlayer-interface.js.map +1 -1
  119. package/dist/unlayer.js +86 -113
  120. package/dist/unlayer.js.map +1 -1
  121. package/dist/vendor/dte-shared/business-calendar-validation.utils.d.ts +25 -0
  122. package/dist/vendor/dte-shared/business-calendar-validation.utils.js +80 -0
  123. package/dist/vendor/dte-shared/components/business-calendar-section.d.ts +15 -0
  124. package/dist/vendor/dte-shared/components/business-calendar-section.js +14 -0
  125. package/dist/vendor/dte-shared/components/schedule-drawer.d.ts +18 -0
  126. package/dist/vendor/dte-shared/components/schedule-drawer.js +119 -0
  127. package/dist/vendor/dte-shared/components/schedule-picker.d.ts +8 -0
  128. package/dist/vendor/dte-shared/components/schedule-picker.js +88 -0
  129. package/dist/vendor/dte-shared/constants.d.ts +31 -0
  130. package/dist/vendor/dte-shared/constants.js +34 -0
  131. package/dist/vendor/dte-shared/field-schedule-editor-context.d.ts +31 -0
  132. package/dist/vendor/dte-shared/field-schedule-editor-context.js +110 -0
  133. package/dist/vendor/dte-shared/index.d.ts +8 -0
  134. package/dist/vendor/dte-shared/index.js +7 -0
  135. package/dist/vendor/dte-shared/schedule-bindings.utils.d.ts +22 -0
  136. package/dist/vendor/dte-shared/schedule-bindings.utils.js +31 -0
  137. package/dist/vendor/dte-shared/styles/schedule.css +19 -0
  138. package/dist/vendor/dte-shared/types.d.ts +129 -0
  139. package/dist/vendor/dte-shared/types.js +1 -0
  140. package/package.json +7 -1
  141. package/src/__tests__/business-calendar-drawer.test.tsx +183 -0
  142. package/src/__tests__/business-calendar-requests.test.ts +166 -0
  143. package/src/__tests__/business-calendar-state.test.tsx +142 -0
  144. package/src/__tests__/condition-row.test.tsx +131 -0
  145. package/src/__tests__/date-calc.test.ts +145 -0
  146. package/src/__tests__/e-sign-offset-modal.test.tsx +124 -0
  147. package/src/__tests__/instance-id.test.ts +49 -0
  148. package/src/__tests__/store.business-calendar.test.ts +185 -0
  149. package/src/__tests__/unlayer.e-sign-types.test.ts +30 -0
  150. package/src/business-calendar/BusinessCalendarDrawer.tsx +76 -0
  151. package/src/business-calendar/business-calendar-requests.ts +80 -0
  152. package/src/business-calendar/business-calendar-state.ts +113 -0
  153. package/src/business-calendar/useBusinessCalendarRequests.ts +49 -0
  154. package/src/display-conditions/ConditionRow.tsx +102 -175
  155. package/src/display-conditions/LookupValueControl.tsx +1 -12
  156. package/src/e-sign-offset/ESignDateSignedOffsetModal.tsx +20 -12
  157. package/src/e-sign-offset/ESignOffsetRuleRow.tsx +7 -2
  158. package/src/editor-core-source.ts +2 -2
  159. package/src/editor.tsx +15 -0
  160. package/src/index.ts +10 -0
  161. package/src/shared/const.ts +61 -0
  162. package/src/shared/date-calc.ts +155 -78
  163. package/src/shared/instance-id.ts +6 -1
  164. package/src/store.ts +68 -5
  165. package/src/unlayer-interface.tsx +25 -1
  166. package/src/unlayer.tsx +5 -5
package/dist/api-core.js CHANGED
@@ -1,31 +1,26 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
1
  import { editorCoreScript } from './editor-core';
15
2
  import { loadScriptSource } from './loadScript';
16
3
  const dummyStore = {
17
- renderHtml () {
4
+ renderHtml() {
18
5
  return '';
19
6
  },
20
- sendData () {},
21
- getTool () {
7
+ sendData() { },
8
+ getTool() {
22
9
  return undefined;
23
- }
10
+ },
24
11
  };
25
12
  export class UnlayerCoreApi {
13
+ constructor() {
14
+ Object.defineProperty(this, "loaded", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: new Set()
19
+ });
20
+ }
26
21
  get dteStore() {
27
- var _window_dteStore;
28
- return (_window_dteStore = window.dteStore) !== null && _window_dteStore !== void 0 ? _window_dteStore : dummyStore;
22
+ var _a;
23
+ return (_a = window.dteStore) !== null && _a !== void 0 ? _a : dummyStore;
29
24
  }
30
25
  clean() {
31
26
  this.loaded = new Set();
@@ -38,32 +33,30 @@ export class UnlayerCoreApi {
38
33
  loadScriptSource(editorCoreScript);
39
34
  }
40
35
  getCustomToolModel(key) {
36
+ var _a;
41
37
  const dteTool = this.dteStore.getTool(key);
42
38
  if (!dteTool) {
43
39
  return {};
44
40
  }
45
41
  try {
46
- var _dteTool_getModel;
47
- return (_dteTool_getModel = dteTool.getModel()) !== null && _dteTool_getModel !== void 0 ? _dteTool_getModel : {};
48
- } catch (unused) {
42
+ return (_a = dteTool.getModel()) !== null && _a !== void 0 ? _a : {};
43
+ }
44
+ catch (_b) {
49
45
  return {};
50
46
  }
51
47
  }
52
48
  getToolDataSources(tool) {
49
+ var _a;
53
50
  const dteTool = tool.slug ? this.dteStore.getTool(tool.slug) : undefined;
54
51
  if (!dteTool) {
55
52
  return [];
56
53
  }
57
54
  try {
58
- var _dteTool_dataSources;
59
- return (_dteTool_dataSources = dteTool.dataSources(tool.values)) !== null && _dteTool_dataSources !== void 0 ? _dteTool_dataSources : [];
60
- } catch (unused) {
55
+ return (_a = dteTool.dataSources(tool.values)) !== null && _a !== void 0 ? _a : [];
56
+ }
57
+ catch (_b) {
61
58
  return [];
62
59
  }
63
60
  }
64
- constructor(){
65
- _define_property(this, "loaded", new Set());
66
- }
67
61
  }
68
-
69
62
  //# sourceMappingURL=api-core.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api-core.ts"],"sourcesContent":["import { editorCoreScript } from './editor-core';\nimport { loadScriptSource } from './loadScript';\nimport { UnlayerStore } from './shared/tools';\nimport { UnlayerDesignTool } from './unlayer-interface';\n\nconst dummyStore: UnlayerStore = {\n renderHtml() {\n return '';\n },\n sendData() {},\n getTool() {\n return undefined;\n },\n};\n\nexport class UnlayerCoreApi {\n private loaded = new Set<string>();\n\n private get dteStore(): UnlayerStore {\n return (window as any).dteStore ?? dummyStore;\n }\n\n clean() {\n this.loaded = new Set();\n }\n\n preloadCore() {\n if (this.loaded.has('_core')) {\n return;\n }\n this.loaded.add('_core');\n\n loadScriptSource(editorCoreScript);\n }\n\n getCustomToolModel(key: string): object {\n const dteTool = this.dteStore.getTool(key);\n\n if (!dteTool) {\n return {};\n }\n\n try {\n return dteTool.getModel() ?? {};\n } catch {\n return {};\n }\n }\n\n getToolDataSources(tool: UnlayerDesignTool): string[] {\n const dteTool = tool.slug ? this.dteStore.getTool(tool.slug) : undefined;\n\n if (!dteTool) {\n return [];\n }\n\n try {\n return dteTool.dataSources(tool.values) ?? [];\n } catch {\n return [];\n }\n }\n}\n"],"names":["editorCoreScript","loadScriptSource","dummyStore","renderHtml","sendData","getTool","undefined","UnlayerCoreApi","dteStore","window","clean","loaded","Set","preloadCore","has","add","getCustomToolModel","key","dteTool","getModel","getToolDataSources","tool","slug","dataSources","values"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,gBAAgB,QAAQ,eAAe;AAIhD,MAAMC,aAA2B;IAC7BC;QACI,OAAO;IACX;IACAC,aAAY;IACZC;QACI,OAAOC;IACX;AACJ;AAEA,OAAO,MAAMC;IAGT,IAAYC,WAAyB;YAC1B;QAAP,QAAO,mBAAA,AAACC,OAAeD,QAAQ,cAAxB,8BAAA,mBAA4BN;IACvC;IAEAQ,QAAQ;QACJ,IAAI,CAACC,MAAM,GAAG,IAAIC;IACtB;IAEAC,cAAc;QACV,IAAI,IAAI,CAACF,MAAM,CAACG,GAAG,CAAC,UAAU;YAC1B;QACJ;QACA,IAAI,CAACH,MAAM,CAACI,GAAG,CAAC;QAEhBd,iBAAiBD;IACrB;IAEAgB,mBAAmBC,GAAW,EAAU;QACpC,MAAMC,UAAU,IAAI,CAACV,QAAQ,CAACH,OAAO,CAACY;QAEtC,IAAI,CAACC,SAAS;YACV,OAAO,CAAC;QACZ;QAEA,IAAI;gBACOA;YAAP,QAAOA,oBAAAA,QAAQC,QAAQ,gBAAhBD,+BAAAA,oBAAsB,CAAC;QAClC,EAAE,eAAM;YACJ,OAAO,CAAC;QACZ;IACJ;IAEAE,mBAAmBC,IAAuB,EAAY;QAClD,MAAMH,UAAUG,KAAKC,IAAI,GAAG,IAAI,CAACd,QAAQ,CAACH,OAAO,CAACgB,KAAKC,IAAI,IAAIhB;QAE/D,IAAI,CAACY,SAAS;YACV,OAAO,EAAE;QACb;QAEA,IAAI;gBACOA;YAAP,QAAOA,uBAAAA,QAAQK,WAAW,CAACF,KAAKG,MAAM,eAA/BN,kCAAAA,uBAAoC,EAAE;QACjD,EAAE,eAAM;YACJ,OAAO,EAAE;QACb;IACJ;;QA7CA,uBAAQP,UAAS,IAAIC;;AA8CzB"}
1
+ {"version":3,"file":"api-core.js","sourceRoot":"","sources":["../src/api-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,UAAU,GAAiB;IAC7B,UAAU;QACN,OAAO,EAAE,CAAC;IACd,CAAC;IACD,QAAQ,KAAI,CAAC;IACb,OAAO;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ,CAAC;AAEF,MAAM,OAAO,cAAc;IAA3B;QACY;;;;mBAAS,IAAI,GAAG,EAAU;WAAC;IA8CvC,CAAC;IA5CG,IAAY,QAAQ;;QAChB,OAAO,MAAC,MAAc,CAAC,QAAQ,mCAAI,UAAU,CAAC;IAClD,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEzB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB,CAAC,GAAW;;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACD,OAAO,MAAA,OAAO,CAAC,QAAQ,EAAE,mCAAI,EAAE,CAAC;QACpC,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,IAAuB;;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACD,OAAO,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;QAClD,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;CACJ"}
@@ -1,49 +1,43 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
1
+ import { loadScript } from './loadScript';
2
+ import { unlayerCustomToolsGetRegisterUrls } from './tools';
3
+ export class UnlayerCustomToolsApi {
4
+ /*
5
+ * ToDo: we need defaultPackageUrl to load schemas for single bundled components.
6
+ * need to think how to better handle it
7
+ */
8
+ constructor(defaultPackageUrl) {
9
+ Object.defineProperty(this, "defaultPackageUrl", {
5
10
  enumerable: true,
6
11
  configurable: true,
7
- writable: true
12
+ writable: true,
13
+ value: defaultPackageUrl
8
14
  });
9
- } else {
10
- obj[key] = value;
11
15
  }
12
- return obj;
13
- }
14
- import { loadScript } from './loadScript';
15
- import { unlayerCustomToolsGetRegisterUrls } from './tools';
16
- export class UnlayerCustomToolsApi {
17
16
  async loadSchemas(tools) {
18
17
  const schemas = {};
19
18
  const schemaUrls = new Set();
20
- const toolKeys = new Set(tools.map((t)=>t.key));
21
- for (const tool of tools){
19
+ const toolKeys = new Set(tools.map(t => t.key));
20
+ for (const tool of tools) {
22
21
  if (tool.groupUrl) {
23
22
  schemaUrls.add(`${tool.groupUrl}/schemas.json`);
24
23
  continue;
25
24
  }
26
25
  schemaUrls.add(`${this.defaultPackageUrl}/schemas.json`);
27
26
  }
28
- await Promise.all(Array.from(schemaUrls).map((url)=>fetch(url).then((response)=>response.json()).catch(()=>({})).then((responseSchemas)=>{
29
- for (const key of Object.keys(schemas)){
30
- if (toolKeys.has(key)) {
31
- schemas[responseSchemas] = responseSchemas[key];
32
- }
27
+ await Promise.all(Array.from(schemaUrls).map(url => fetch(url)
28
+ .then(response => response.json())
29
+ .catch(() => ({}))
30
+ .then(responseSchemas => {
31
+ for (const key of Object.keys(schemas)) {
32
+ if (toolKeys.has(key)) {
33
+ schemas[responseSchemas] = responseSchemas[key];
33
34
  }
34
- })));
35
+ }
36
+ })));
35
37
  return schemas;
36
38
  }
37
39
  async preload(tools) {
38
- await Promise.all(unlayerCustomToolsGetRegisterUrls(tools).map((url)=>loadScript(url).catch(()=>null)));
39
- }
40
- /*
41
- * ToDo: we need defaultPackageUrl to load schemas for single bundled components.
42
- * need to think how to better handle it
43
- */ constructor(defaultPackageUrl){
44
- _define_property(this, "defaultPackageUrl", void 0);
45
- this.defaultPackageUrl = defaultPackageUrl;
40
+ await Promise.all(unlayerCustomToolsGetRegisterUrls(tools).map(url => loadScript(url).catch(() => null)));
46
41
  }
47
42
  }
48
-
49
43
  //# sourceMappingURL=api-custom-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api-custom-tools.ts"],"sourcesContent":["import { loadScript } from './loadScript';\nimport { unlayerCustomToolsGetRegisterUrls } from './tools';\nimport type { UnlayerEditorCustomTool } from './unlayer-interface';\n\nexport class UnlayerCustomToolsApi {\n /*\n * ToDo: we need defaultPackageUrl to load schemas for single bundled components.\n * need to think how to better handle it\n */\n constructor(private defaultPackageUrl: string) {}\n\n async loadSchemas(tools: UnlayerEditorCustomTool[]): Promise<Record<string, any>> {\n const schemas: Record<string, any> = {};\n const schemaUrls = new Set<string>();\n const toolKeys = new Set<string>(tools.map(t => t.key));\n\n for (const tool of tools) {\n if (tool.groupUrl) {\n schemaUrls.add(`${tool.groupUrl}/schemas.json`);\n continue;\n }\n\n schemaUrls.add(`${this.defaultPackageUrl}/schemas.json`);\n }\n\n await Promise.all(\n Array.from(schemaUrls).map(url =>\n fetch(url)\n .then(response => response.json())\n .catch(() => ({}))\n .then(responseSchemas => {\n for (const key of Object.keys(schemas)) {\n if (toolKeys.has(key)) {\n schemas[responseSchemas] = responseSchemas[key];\n }\n }\n })\n )\n );\n\n return schemas;\n }\n\n async preload(tools: UnlayerEditorCustomTool[]) {\n await Promise.all(\n unlayerCustomToolsGetRegisterUrls(tools).map(url => loadScript(url).catch(() => null))\n );\n }\n}\n"],"names":["loadScript","unlayerCustomToolsGetRegisterUrls","UnlayerCustomToolsApi","loadSchemas","tools","schemas","schemaUrls","Set","toolKeys","map","t","key","tool","groupUrl","add","defaultPackageUrl","Promise","all","Array","from","url","fetch","then","response","json","catch","responseSchemas","Object","keys","has","preload"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,iCAAiC,QAAQ,UAAU;AAG5D,OAAO,MAAMC;IAOT,MAAMC,YAAYC,KAAgC,EAAgC;QAC9E,MAAMC,UAA+B,CAAC;QACtC,MAAMC,aAAa,IAAIC;QACvB,MAAMC,WAAW,IAAID,IAAYH,MAAMK,GAAG,CAACC,CAAAA,IAAKA,EAAEC,GAAG;QAErD,KAAK,MAAMC,QAAQR,MAAO;YACtB,IAAIQ,KAAKC,QAAQ,EAAE;gBACfP,WAAWQ,GAAG,CAAC,GAAGF,KAAKC,QAAQ,CAAC,aAAa,CAAC;gBAC9C;YACJ;YAEAP,WAAWQ,GAAG,CAAC,GAAG,IAAI,CAACC,iBAAiB,CAAC,aAAa,CAAC;QAC3D;QAEA,MAAMC,QAAQC,GAAG,CACbC,MAAMC,IAAI,CAACb,YAAYG,GAAG,CAACW,CAAAA,MACvBC,MAAMD,KACDE,IAAI,CAACC,CAAAA,WAAYA,SAASC,IAAI,IAC9BC,KAAK,CAAC,IAAO,CAAA,CAAC,CAAA,GACdH,IAAI,CAACI,CAAAA;gBACF,KAAK,MAAMf,OAAOgB,OAAOC,IAAI,CAACvB,SAAU;oBACpC,IAAIG,SAASqB,GAAG,CAAClB,MAAM;wBACnBN,OAAO,CAACqB,gBAAgB,GAAGA,eAAe,CAACf,IAAI;oBACnD;gBACJ;YACJ;QAIZ,OAAON;IACX;IAEA,MAAMyB,QAAQ1B,KAAgC,EAAE;QAC5C,MAAMY,QAAQC,GAAG,CACbhB,kCAAkCG,OAAOK,GAAG,CAACW,CAAAA,MAAOpB,WAAWoB,KAAKK,KAAK,CAAC,IAAM;IAExF;IA1CA;;;KAGC,GACD,YAAY,AAAQV,iBAAyB,CAAE;;aAA3BA,oBAAAA;IAA4B;AAuCpD"}
1
+ {"version":3,"file":"api-custom-tools.js","sourceRoot":"","sources":["../src/api-custom-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,OAAO,qBAAqB;IAC9B;;;OAGG;IACH,YAAoB,iBAAyB;QAAjC;;;;mBAAQ,iBAAiB;WAAQ;IAAG,CAAC;IAEjD,KAAK,CAAC,WAAW,CAAC,KAAgC;QAC9C,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAExD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,eAAe,CAAC,CAAC;gBAChD,SAAS;YACb,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,eAAe,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACb,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC7B,KAAK,CAAC,GAAG,CAAC;aACL,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACjC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACjB,IAAI,CAAC,eAAe,CAAC,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CACT,CACJ,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgC;QAC1C,MAAM,OAAO,CAAC,GAAG,CACb,iCAAiC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CACzF,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,19 @@
1
+ import { type BusinessCalendarHostProps } from '../vendor/dte-shared/index';
2
+ import type { BusinessCalendarDrawerRequest } from './business-calendar-requests';
3
+ export interface BusinessCalendarDrawerProps {
4
+ /** The field and the schedule to edit (none: a new schedule), asked for from the iframe. */
5
+ request: BusinessCalendarDrawerRequest;
6
+ /** The editor's schedule props (`CreateUnlayerEditorProps`). */
7
+ host: BusinessCalendarHostProps;
8
+ /** Same contract as `DisplayConditionModalProps.portalContainer`. */
9
+ portalContainer?: Element | DocumentFragment | null;
10
+ onClose(): void;
11
+ }
12
+ /**
13
+ * The shared "Create New Schedule" / "Edit Schedule" drawer, opened in the parent window from a
14
+ * date field's inline schedule picker (a calculated field's, in the Formula Builder, or an e-sign
15
+ * "Date Signed Offset" field's, in its property panel), which runs inside the Unlayer iframe
16
+ * without the design system. As BYOD's picker does, a saved schedule is selected for the field.
17
+ */
18
+ export declare function BusinessCalendarDrawer({ host, onClose, portalContainer, request, }: Readonly<BusinessCalendarDrawerProps>): import("react").JSX.Element | null;
19
+ //# sourceMappingURL=BusinessCalendarDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BusinessCalendarDrawer.d.ts","sourceRoot":"","sources":["../../src/business-calendar/BusinessCalendarDrawer.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,yBAAyB,EAKjC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAElF,MAAM,WAAW,2BAA2B;IACxC,4FAA4F;IAC5F,OAAO,EAAE,6BAA6B,CAAC;IACvC,gEAAgE;IAChE,IAAI,EAAE,yBAAyB,CAAC;IAChC,qEAAqE;IACrE,eAAe,CAAC,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACpD,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,eAAe,EACf,OAAO,GACV,EAAE,QAAQ,CAAC,2BAA2B,CAAC,sCAyCvC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ThemeProvider } from '@servicetitan/anvil2';
3
+ // eslint-disable-next-line import/no-extraneous-dependencies -- bundled, see bundle-shared.mjs
4
+ import { findSelectedSchedule, ScheduleDrawer, useFieldScheduleEditorContext, } from '../vendor/dte-shared/index';
5
+ import { useEffect } from 'react';
6
+ import { createPortal } from 'react-dom';
7
+ /**
8
+ * The shared "Create New Schedule" / "Edit Schedule" drawer, opened in the parent window from a
9
+ * date field's inline schedule picker (a calculated field's, in the Formula Builder, or an e-sign
10
+ * "Date Signed Offset" field's, in its property panel), which runs inside the Unlayer iframe
11
+ * without the design system. As BYOD's picker does, a saved schedule is selected for the field.
12
+ */
13
+ export function BusinessCalendarDrawer({ host, onClose, portalContainer, request, }) {
14
+ const businessCalendar = useFieldScheduleEditorContext(request.fieldKey, host);
15
+ const editingSchedule = request.scheduleId === undefined
16
+ ? undefined
17
+ : findSelectedSchedule(host.schedules, request.scheduleId);
18
+ /*
19
+ * The schedule to edit was deleted meanwhile: close the request instead of turning the edit
20
+ * into a create, or of leaving it pending to open the drawer on its own later.
21
+ */
22
+ const scheduleMissing = request.scheduleId !== undefined && !editingSchedule;
23
+ useEffect(() => {
24
+ if (scheduleMissing) {
25
+ onClose();
26
+ }
27
+ }, [onClose, scheduleMissing]);
28
+ if (scheduleMissing) {
29
+ return null;
30
+ }
31
+ const handleSaved = (schedule) => {
32
+ businessCalendar.onSelectSchedule(schedule.id);
33
+ onClose();
34
+ };
35
+ const drawer = (_jsx(ScheduleDrawer, { businessCalendar: businessCalendar, editingSchedule: editingSchedule, onClose: onClose, onSaved: handleSaved }));
36
+ if (portalContainer) {
37
+ return createPortal(_jsx(ThemeProvider, { children: drawer }), portalContainer);
38
+ }
39
+ return drawer;
40
+ }
41
+ //# sourceMappingURL=BusinessCalendarDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BusinessCalendarDrawer.js","sourceRoot":"","sources":["../../src/business-calendar/BusinessCalendarDrawer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,+FAA+F;AAC/F,OAAO,EAGH,oBAAoB,EACpB,cAAc,EACd,6BAA6B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAazC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,eAAe,EACf,OAAO,GAC6B;IACpC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,eAAe,GACjB,OAAO,CAAC,UAAU,KAAK,SAAS;QAC5B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE;;;OAGG;IACH,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC;IAC7E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,eAAe,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAE/B,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,QAA6B,EAAE,EAAE;QAClD,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CACX,KAAC,cAAc,IACX,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,GACtB,CACL,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,KAAC,aAAa,cAAE,MAAM,GAAiB,EAAE,eAAe,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type BusinessCalendarHostProps, type FieldScheduleBindingsAccess } from '../vendor/dte-shared/index';
2
+ import type { UnlayerEventBusinessCalendarRequest, UnlayerEventBusinessCalendarResult } from '../shared/const';
3
+ /** The schedule drawer to show for a field: a new schedule, or `scheduleId` to edit. */
4
+ export interface BusinessCalendarDrawerRequest {
5
+ fieldKey: string;
6
+ scheduleId?: number;
7
+ }
8
+ export interface BusinessCalendarRequestHandlerDeps {
9
+ bindings: FieldScheduleBindingsAccess;
10
+ /** The editor's current schedule props. */
11
+ getHost(): BusinessCalendarHostProps;
12
+ openDrawer(request: BusinessCalendarDrawerRequest): void;
13
+ sendResult(result: UnlayerEventBusinessCalendarResult): void;
14
+ }
15
+ /**
16
+ * Carries out the iframe's schedule requests (`--business-calendar-request`) through the field's
17
+ * `ScheduleEditorContext`, the one BYOD's toggle and picker use, so a toggle, a pick or a delete
18
+ * changes the bindings exactly as there. A delete then reports back. Unlike `SchedulePicker` it
19
+ * doesn't select the default schedule for the field afterwards: the context's delete has already
20
+ * moved every field still on that schedule to the default one, and selecting it again would turn
21
+ * the field's toggle back on if it was switched off while the delete was running. A pick or a
22
+ * delete of a schedule the host doesn't list as one of the tenant's own is ignored or refused.
23
+ */
24
+ export declare const createBusinessCalendarRequestHandler: ({ bindings, getHost, openDrawer, sendResult }: BusinessCalendarRequestHandlerDeps) => (request: UnlayerEventBusinessCalendarRequest) => void;
25
+ //# sourceMappingURL=business-calendar-requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-calendar-requests.d.ts","sourceRoot":"","sources":["../../src/business-calendar/business-calendar-requests.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAEnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACR,mCAAmC,EACnC,kCAAkC,EACrC,MAAM,iBAAiB,CAAC;AAEzB,wFAAwF;AACxF,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kCAAkC;IAC/C,QAAQ,EAAE,2BAA2B,CAAC;IACtC,2CAA2C;IAC3C,OAAO,IAAI,yBAAyB,CAAC;IACrC,UAAU,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,MAAM,EAAE,kCAAkC,GAAG,IAAI,CAAC;CAChE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oCAAoC,GAC5C,+CAA+C,kCAAkC,MACjF,SAAS,mCAAmC,SA0C5C,CAAC"}
@@ -0,0 +1,46 @@
1
+ // eslint-disable-next-line import/no-extraneous-dependencies -- bundled, see bundle-shared.mjs
2
+ import { buildFieldScheduleEditorContext, SCHEDULE_PICKER_TEXT, } from '../vendor/dte-shared/index';
3
+ /**
4
+ * Carries out the iframe's schedule requests (`--business-calendar-request`) through the field's
5
+ * `ScheduleEditorContext`, the one BYOD's toggle and picker use, so a toggle, a pick or a delete
6
+ * changes the bindings exactly as there. A delete then reports back. Unlike `SchedulePicker` it
7
+ * doesn't select the default schedule for the field afterwards: the context's delete has already
8
+ * moved every field still on that schedule to the default one, and selecting it again would turn
9
+ * the field's toggle back on if it was switched off while the delete was running. A pick or a
10
+ * delete of a schedule the host doesn't list as one of the tenant's own is ignored or refused.
11
+ */
12
+ export const createBusinessCalendarRequestHandler = ({ bindings, getHost, openDrawer, sendResult }) => (request) => {
13
+ const host = getHost();
14
+ const context = buildFieldScheduleEditorContext(request.fieldKey, host, bindings);
15
+ const isListedTenantSchedule = (scheduleId) => { var _a; return !!((_a = host.schedules) === null || _a === void 0 ? void 0 : _a.some(schedule => schedule.id === scheduleId && !schedule.isDefault)); };
16
+ switch (request.action) {
17
+ case 'toggle':
18
+ context.onToggle(request.enabled);
19
+ return;
20
+ case 'select':
21
+ // No id is the default schedule.
22
+ if (request.scheduleId === undefined ||
23
+ isListedTenantSchedule(request.scheduleId)) {
24
+ context.onSelectSchedule(request.scheduleId);
25
+ }
26
+ return;
27
+ case 'create':
28
+ openDrawer({ fieldKey: request.fieldKey });
29
+ return;
30
+ case 'edit':
31
+ openDrawer({ fieldKey: request.fieldKey, scheduleId: request.scheduleId });
32
+ return;
33
+ case 'delete': {
34
+ const { requestId, scheduleId } = request;
35
+ if (!context.onDeleteSchedule || !isListedTenantSchedule(scheduleId)) {
36
+ sendResult({ requestId, error: SCHEDULE_PICKER_TEXT.deleteFailed });
37
+ return;
38
+ }
39
+ context.onDeleteSchedule(scheduleId).then(() => sendResult({ requestId }), (e) => sendResult({
40
+ requestId,
41
+ error: e instanceof Error ? e.message : SCHEDULE_PICKER_TEXT.deleteFailed,
42
+ }));
43
+ }
44
+ }
45
+ };
46
+ //# sourceMappingURL=business-calendar-requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-calendar-requests.js","sourceRoot":"","sources":["../../src/business-calendar/business-calendar-requests.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EACH,+BAA+B,EAG/B,oBAAoB,GACvB,MAAM,0BAA0B,CAAC;AAoBlC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC7C,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAsC,EAAE,EAAE,CACtF,CAAC,OAA4C,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,+BAA+B,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClF,MAAM,sBAAsB,GAAG,CAAC,UAAkB,EAAE,EAAE,WAClD,OAAA,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAA,EAAA,CAAC;IAE1F,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,QAAQ;YACT,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO;QACX,KAAK,QAAQ;YACT,iCAAiC;YACjC,IACI,OAAO,CAAC,UAAU,KAAK,SAAS;gBAChC,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC5C,CAAC;gBACC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;QACX,KAAK,QAAQ;YACT,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO;QACX,KAAK,MAAM;YACP,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,OAAO;QACX,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnE,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC;gBACpE,OAAO;YACX,CAAC;YACD,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CACrC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,EAC/B,CAAC,CAAU,EAAE,EAAE,CACX,UAAU,CAAC;gBACP,SAAS;gBACT,KAAK,EACD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,YAAY;aACzE,CAAC,CACT,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { UnlayerEventBusinessCalendarState } from '../shared/const';
2
+ import type { UnlayerStore } from '../store';
3
+ import type { CreateUnlayerEditorProps } from '../unlayer-interface';
4
+ type BusinessCalendarStateSource = Pick<CreateUnlayerEditorProps, 'fieldCalendars' | 'holidayCatalog' | 'holidayCatalogError' | 'holidayCatalogLoading' | 'holidays' | 'scheduleBindings' | 'schedules' | 'schedulesError' | 'schedulesLoading'> & Pick<UnlayerEventBusinessCalendarState, 'canDeleteSchedule' | 'enabled'>;
5
+ /**
6
+ * The host's schedule props as the iframe needs them (`--business-calendar-state`): whether the
7
+ * schedule UI is on, each bound field's schedule, the schedules and holidays the inline picker
8
+ * shows, and the calendars the previews use.
9
+ *
10
+ * While the host edits schedules, only bound fields keep their calendar: a field whose toggle was
11
+ * just turned off uses the default calendar right away, without waiting for the host to drop its
12
+ * resolved calendar.
13
+ */
14
+ export declare const buildBusinessCalendarState: (source: BusinessCalendarStateSource) => UnlayerEventBusinessCalendarState;
15
+ /**
16
+ * Keeps the iframe's schedule state in step with the editor's props: rebuilt only when one of
17
+ * them changes (the callbacks count only for whether they are passed), and sent by the store only
18
+ * when the result differs from what the iframe has.
19
+ */
20
+ export declare function useBusinessCalendarState(store: UnlayerStore, opts: CreateUnlayerEditorProps): void;
21
+ export {};
22
+ //# sourceMappingURL=business-calendar-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-calendar-state.d.ts","sourceRoot":"","sources":["../../src/business-calendar/business-calendar-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,KAAK,2BAA2B,GAAG,IAAI,CACnC,wBAAwB,EACtB,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,GACrB,uBAAuB,GACvB,UAAU,GACV,kBAAkB,GAClB,WAAW,GACX,gBAAgB,GAChB,kBAAkB,CACvB,GACG,IAAI,CAAC,iCAAiC,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,GACnC,QAAQ,2BAA2B,KACpC,iCA0BF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,QAgD3F"}
@@ -0,0 +1,74 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ /**
3
+ * The host's schedule props as the iframe needs them (`--business-calendar-state`): whether the
4
+ * schedule UI is on, each bound field's schedule, the schedules and holidays the inline picker
5
+ * shows, and the calendars the previews use.
6
+ *
7
+ * While the host edits schedules, only bound fields keep their calendar: a field whose toggle was
8
+ * just turned off uses the default calendar right away, without waiting for the host to drop its
9
+ * resolved calendar.
10
+ */
11
+ export const buildBusinessCalendarState = (source) => {
12
+ var _a, _b, _c, _d;
13
+ const bindings = {};
14
+ const boundCalendars = {};
15
+ for (const { fieldKey, scheduleId } of (_a = source.scheduleBindings) !== null && _a !== void 0 ? _a : []) {
16
+ bindings[fieldKey] = { scheduleId };
17
+ const calendar = (_b = source.fieldCalendars) === null || _b === void 0 ? void 0 : _b[fieldKey];
18
+ if (calendar) {
19
+ boundCalendars[fieldKey] = calendar;
20
+ }
21
+ }
22
+ return {
23
+ enabled: source.enabled,
24
+ bindings,
25
+ schedules: (_c = source.schedules) !== null && _c !== void 0 ? _c : [],
26
+ schedulesLoading: source.schedulesLoading,
27
+ schedulesError: source.schedulesError,
28
+ holidayCatalog: source.holidayCatalog,
29
+ holidayCatalogLoading: source.holidayCatalogLoading,
30
+ holidayCatalogError: source.holidayCatalogError,
31
+ canDeleteSchedule: source.canDeleteSchedule,
32
+ fieldCalendars: source.enabled ? boundCalendars : ((_d = source.fieldCalendars) !== null && _d !== void 0 ? _d : {}),
33
+ holidays: source.holidays,
34
+ };
35
+ };
36
+ /**
37
+ * Keeps the iframe's schedule state in step with the editor's props: rebuilt only when one of
38
+ * them changes (the callbacks count only for whether they are passed), and sent by the store only
39
+ * when the result differs from what the iframe has.
40
+ */
41
+ export function useBusinessCalendarState(store, opts) {
42
+ const { fieldCalendars, holidayCatalog, holidayCatalogError, holidayCatalogLoading, holidays, scheduleBindings, schedules, schedulesError, schedulesLoading, } = opts;
43
+ const enabled = !!opts.onScheduleBindingsChange;
44
+ const canDeleteSchedule = !!opts.onDeleteSchedule;
45
+ const state = useMemo(() => buildBusinessCalendarState({
46
+ canDeleteSchedule,
47
+ enabled,
48
+ fieldCalendars,
49
+ holidayCatalog,
50
+ holidayCatalogError,
51
+ holidayCatalogLoading,
52
+ holidays,
53
+ scheduleBindings,
54
+ schedules,
55
+ schedulesError,
56
+ schedulesLoading,
57
+ }), [
58
+ canDeleteSchedule,
59
+ enabled,
60
+ fieldCalendars,
61
+ holidayCatalog,
62
+ holidayCatalogError,
63
+ holidayCatalogLoading,
64
+ holidays,
65
+ scheduleBindings,
66
+ schedules,
67
+ schedulesError,
68
+ schedulesLoading,
69
+ ]);
70
+ useEffect(() => {
71
+ store.setBusinessCalendarState(state);
72
+ }, [state, store]);
73
+ }
74
+ //# sourceMappingURL=business-calendar-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-calendar-state.js","sourceRoot":"","sources":["../../src/business-calendar/business-calendar-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAoB3C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,MAAmC,EACF,EAAE;;IACnC,MAAM,QAAQ,GAAkD,EAAE,CAAC;IACnE,MAAM,cAAc,GAAqC,EAAE,CAAC;IAE5D,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,MAAA,MAAM,CAAC,gBAAgB,mCAAI,EAAE,EAAE,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,cAAc,0CAAG,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACX,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACxC,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ;QACR,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,EAAE;QACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,cAAc,mCAAI,EAAE,CAAC;QAC/E,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC5B,CAAC;AACN,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAmB,EAAE,IAA8B;IACxF,MAAM,EACF,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,gBAAgB,GACnB,GAAG,IAAI,CAAC;IACT,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAChD,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CACjB,GAAG,EAAE,CACD,0BAA0B,CAAC;QACvB,iBAAiB;QACjB,OAAO;QACP,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,qBAAqB;QACrB,QAAQ;QACR,gBAAgB;QAChB,SAAS;QACT,cAAc;QACd,gBAAgB;KACnB,CAAC,EACN;QACI,iBAAiB;QACjB,OAAO;QACP,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,qBAAqB;QACrB,QAAQ;QACR,gBAAgB;QAChB,SAAS;QACT,cAAc;QACd,gBAAgB;KACnB,CACJ,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type BusinessCalendarHostProps } from '../vendor/dte-shared/index';
2
+ import type { UnlayerStore } from '../store';
3
+ import { type BusinessCalendarDrawerRequest } from './business-calendar-requests';
4
+ /**
5
+ * Handles the iframe's schedule requests for `UnlayerEditor`: changes the bindings through the
6
+ * host's callbacks, and returns the schedule drawer to show. Each drawer request carries a new
7
+ * `id`, to remount the drawer with its own starting values.
8
+ */
9
+ export declare function useBusinessCalendarRequests(store: UnlayerStore, host: BusinessCalendarHostProps): {
10
+ closeDrawer: () => void;
11
+ drawer: (BusinessCalendarDrawerRequest & {
12
+ id: number;
13
+ }) | null;
14
+ };
15
+ //# sourceMappingURL=useBusinessCalendarRequests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBusinessCalendarRequests.d.ts","sourceRoot":"","sources":["../../src/business-calendar/useBusinessCalendarRequests.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,yBAAyB,EAEjC,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACH,KAAK,6BAA6B,EAErC,MAAM,8BAA8B,CAAC;AAEtC;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB;;;YAChB,MAAM;;EA8BrF"}
@@ -0,0 +1,30 @@
1
+ // eslint-disable-next-line import/no-extraneous-dependencies -- bundled, see bundle-shared.mjs
2
+ import { useFieldScheduleBindingsAccess, } from '../vendor/dte-shared/index';
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { createBusinessCalendarRequestHandler, } from './business-calendar-requests';
5
+ /**
6
+ * Handles the iframe's schedule requests for `UnlayerEditor`: changes the bindings through the
7
+ * host's callbacks, and returns the schedule drawer to show. Each drawer request carries a new
8
+ * `id`, to remount the drawer with its own starting values.
9
+ */
10
+ export function useBusinessCalendarRequests(store, host) {
11
+ const [drawer, setDrawer] = useState(null);
12
+ const bindings = useFieldScheduleBindingsAccess(host.scheduleBindings, host.onScheduleBindingsChange);
13
+ const latestHost = useRef(host);
14
+ useEffect(() => {
15
+ latestHost.current = host;
16
+ });
17
+ useEffect(() => {
18
+ let drawerId = 0;
19
+ store.setOnBusinessCalendarRequest(createBusinessCalendarRequestHandler({
20
+ bindings,
21
+ getHost: () => latestHost.current,
22
+ openDrawer: request => setDrawer({ ...request, id: ++drawerId }),
23
+ sendResult: store.sendBusinessCalendarResult,
24
+ }));
25
+ return () => store.setOnBusinessCalendarRequest();
26
+ }, [bindings, store]);
27
+ const closeDrawer = useCallback(() => setDrawer(null), []);
28
+ return { closeDrawer, drawer };
29
+ }
30
+ //# sourceMappingURL=useBusinessCalendarRequests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBusinessCalendarRequests.js","sourceRoot":"","sources":["../../src/business-calendar/useBusinessCalendarRequests.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAEH,8BAA8B,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAEH,oCAAoC,GACvC,MAAM,8BAA8B,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAmB,EAAE,IAA+B;IAC5F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAChC,IAAI,CACP,CAAC;IACF,MAAM,QAAQ,GAAG,8BAA8B,CAC3C,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,wBAAwB,CAChC,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE;QACX,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,KAAK,CAAC,4BAA4B,CAC9B,oCAAoC,CAAC;YACjC,QAAQ;YACR,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO;YACjC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;YAChE,UAAU,EAAE,KAAK,CAAC,0BAA0B;SAC/C,CAAC,CACL,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;IACtD,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC"}