@bryntum/scheduler-react 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.md +52 -0
  2. package/lib/BryntumAIFilterField.d.ts +231 -0
  3. package/lib/BryntumAIFilterField.js +168 -0
  4. package/lib/BryntumAIFilterField.js.map +1 -0
  5. package/lib/BryntumButton.d.ts +206 -0
  6. package/lib/BryntumButton.js +148 -0
  7. package/lib/BryntumButton.js.map +1 -0
  8. package/lib/BryntumButtonGroup.d.ts +201 -0
  9. package/lib/BryntumButtonGroup.js +154 -0
  10. package/lib/BryntumButtonGroup.js.map +1 -0
  11. package/lib/BryntumChatPanel.d.ts +246 -0
  12. package/lib/BryntumChatPanel.js +178 -0
  13. package/lib/BryntumChatPanel.js.map +1 -0
  14. package/lib/BryntumCheckbox.d.ts +239 -0
  15. package/lib/BryntumCheckbox.js +168 -0
  16. package/lib/BryntumCheckbox.js.map +1 -0
  17. package/lib/BryntumCheckboxGroup.d.ts +249 -0
  18. package/lib/BryntumCheckboxGroup.js +182 -0
  19. package/lib/BryntumCheckboxGroup.js.map +1 -0
  20. package/lib/BryntumChecklistFilterCombo.d.ts +268 -0
  21. package/lib/BryntumChecklistFilterCombo.js +205 -0
  22. package/lib/BryntumChecklistFilterCombo.js.map +1 -0
  23. package/lib/BryntumChipView.d.ts +208 -0
  24. package/lib/BryntumChipView.js +152 -0
  25. package/lib/BryntumChipView.js.map +1 -0
  26. package/lib/BryntumCodeEditor.d.ts +237 -0
  27. package/lib/BryntumCodeEditor.js +176 -0
  28. package/lib/BryntumCodeEditor.js.map +1 -0
  29. package/lib/BryntumColorField.d.ts +231 -0
  30. package/lib/BryntumColorField.js +169 -0
  31. package/lib/BryntumColorField.js.map +1 -0
  32. package/lib/BryntumCombo.d.ts +266 -0
  33. package/lib/BryntumCombo.js +202 -0
  34. package/lib/BryntumCombo.js.map +1 -0
  35. package/lib/BryntumContainer.d.ts +185 -0
  36. package/lib/BryntumContainer.js +148 -0
  37. package/lib/BryntumContainer.js.map +1 -0
  38. package/lib/BryntumDateField.d.ts +241 -0
  39. package/lib/BryntumDateField.js +178 -0
  40. package/lib/BryntumDateField.js.map +1 -0
  41. package/lib/BryntumDatePicker.d.ts +310 -0
  42. package/lib/BryntumDatePicker.js +213 -0
  43. package/lib/BryntumDatePicker.js.map +1 -0
  44. package/lib/BryntumDateRangeField.d.ts +242 -0
  45. package/lib/BryntumDateRangeField.js +179 -0
  46. package/lib/BryntumDateRangeField.js.map +1 -0
  47. package/lib/BryntumDateTimeField.d.ts +222 -0
  48. package/lib/BryntumDateTimeField.js +158 -0
  49. package/lib/BryntumDateTimeField.js.map +1 -0
  50. package/lib/BryntumDemoCodeEditor.d.ts +240 -0
  51. package/lib/BryntumDemoCodeEditor.js +179 -0
  52. package/lib/BryntumDemoCodeEditor.js.map +1 -0
  53. package/lib/BryntumDemoHeader.d.ts +30 -0
  54. package/lib/BryntumDemoHeader.js +84 -0
  55. package/lib/BryntumDemoHeader.js.map +1 -0
  56. package/lib/BryntumDisplayField.d.ts +227 -0
  57. package/lib/BryntumDisplayField.js +163 -0
  58. package/lib/BryntumDisplayField.js.map +1 -0
  59. package/lib/BryntumDurationField.d.ts +234 -0
  60. package/lib/BryntumDurationField.js +175 -0
  61. package/lib/BryntumDurationField.js.map +1 -0
  62. package/lib/BryntumEditor.d.ts +249 -0
  63. package/lib/BryntumEditor.js +167 -0
  64. package/lib/BryntumEditor.js.map +1 -0
  65. package/lib/BryntumEventColorField.d.ts +231 -0
  66. package/lib/BryntumEventColorField.js +169 -0
  67. package/lib/BryntumEventColorField.js.map +1 -0
  68. package/lib/BryntumFieldFilterPicker.d.ts +202 -0
  69. package/lib/BryntumFieldFilterPicker.js +161 -0
  70. package/lib/BryntumFieldFilterPicker.js.map +1 -0
  71. package/lib/BryntumFieldFilterPickerGroup.d.ts +207 -0
  72. package/lib/BryntumFieldFilterPickerGroup.js +164 -0
  73. package/lib/BryntumFieldFilterPickerGroup.js.map +1 -0
  74. package/lib/BryntumFieldSet.d.ts +235 -0
  75. package/lib/BryntumFieldSet.js +174 -0
  76. package/lib/BryntumFieldSet.js.map +1 -0
  77. package/lib/BryntumFileField.d.ts +228 -0
  78. package/lib/BryntumFileField.js +164 -0
  79. package/lib/BryntumFileField.js.map +1 -0
  80. package/lib/BryntumFilePicker.d.ts +192 -0
  81. package/lib/BryntumFilePicker.js +153 -0
  82. package/lib/BryntumFilePicker.js.map +1 -0
  83. package/lib/BryntumFilterField.d.ts +234 -0
  84. package/lib/BryntumFilterField.js +171 -0
  85. package/lib/BryntumFilterField.js.map +1 -0
  86. package/lib/BryntumFullscreenButton.d.ts +8 -0
  87. package/lib/BryntumFullscreenButton.js +37 -0
  88. package/lib/BryntumFullscreenButton.js.map +1 -0
  89. package/lib/BryntumGrid.d.ts +844 -0
  90. package/lib/BryntumGrid.js +335 -0
  91. package/lib/BryntumGrid.js.map +1 -0
  92. package/lib/BryntumGridBase.d.ts +842 -0
  93. package/lib/BryntumGridBase.js +333 -0
  94. package/lib/BryntumGridBase.js.map +1 -0
  95. package/lib/BryntumGridChartDesigner.d.ts +162 -0
  96. package/lib/BryntumGridChartDesigner.js +127 -0
  97. package/lib/BryntumGridChartDesigner.js.map +1 -0
  98. package/lib/BryntumGridFieldFilterPicker.d.ts +203 -0
  99. package/lib/BryntumGridFieldFilterPicker.js +162 -0
  100. package/lib/BryntumGridFieldFilterPicker.js.map +1 -0
  101. package/lib/BryntumGridFieldFilterPickerGroup.d.ts +206 -0
  102. package/lib/BryntumGridFieldFilterPickerGroup.js +163 -0
  103. package/lib/BryntumGridFieldFilterPickerGroup.js.map +1 -0
  104. package/lib/BryntumGroupBar.d.ts +208 -0
  105. package/lib/BryntumGroupBar.js +152 -0
  106. package/lib/BryntumGroupBar.js.map +1 -0
  107. package/lib/BryntumHint.d.ts +260 -0
  108. package/lib/BryntumHint.js +184 -0
  109. package/lib/BryntumHint.js.map +1 -0
  110. package/lib/BryntumLabel.d.ts +161 -0
  111. package/lib/BryntumLabel.js +126 -0
  112. package/lib/BryntumLabel.js.map +1 -0
  113. package/lib/BryntumList.d.ts +205 -0
  114. package/lib/BryntumList.js +149 -0
  115. package/lib/BryntumList.js.map +1 -0
  116. package/lib/BryntumMenu.d.ts +264 -0
  117. package/lib/BryntumMenu.js +187 -0
  118. package/lib/BryntumMenu.js.map +1 -0
  119. package/lib/BryntumMonthPicker.d.ts +240 -0
  120. package/lib/BryntumMonthPicker.js +173 -0
  121. package/lib/BryntumMonthPicker.js.map +1 -0
  122. package/lib/BryntumNumberField.d.ts +234 -0
  123. package/lib/BryntumNumberField.js +170 -0
  124. package/lib/BryntumNumberField.js.map +1 -0
  125. package/lib/BryntumPagingToolbar.d.ts +210 -0
  126. package/lib/BryntumPagingToolbar.js +156 -0
  127. package/lib/BryntumPagingToolbar.js.map +1 -0
  128. package/lib/BryntumPanel.d.ts +231 -0
  129. package/lib/BryntumPanel.js +170 -0
  130. package/lib/BryntumPanel.js.map +1 -0
  131. package/lib/BryntumPasswordField.d.ts +226 -0
  132. package/lib/BryntumPasswordField.js +162 -0
  133. package/lib/BryntumPasswordField.js.map +1 -0
  134. package/lib/BryntumProjectCombo.d.ts +267 -0
  135. package/lib/BryntumProjectCombo.js +203 -0
  136. package/lib/BryntumProjectCombo.js.map +1 -0
  137. package/lib/BryntumRadio.d.ts +239 -0
  138. package/lib/BryntumRadio.js +168 -0
  139. package/lib/BryntumRadio.js.map +1 -0
  140. package/lib/BryntumRadioGroup.d.ts +239 -0
  141. package/lib/BryntumRadioGroup.js +178 -0
  142. package/lib/BryntumRadioGroup.js.map +1 -0
  143. package/lib/BryntumResourceCombo.d.ts +267 -0
  144. package/lib/BryntumResourceCombo.js +203 -0
  145. package/lib/BryntumResourceCombo.js.map +1 -0
  146. package/lib/BryntumResourceFilter.d.ts +214 -0
  147. package/lib/BryntumResourceFilter.js +154 -0
  148. package/lib/BryntumResourceFilter.js.map +1 -0
  149. package/lib/BryntumScheduler.d.ts +2037 -0
  150. package/lib/BryntumScheduler.js +642 -0
  151. package/lib/BryntumScheduler.js.map +1 -0
  152. package/lib/BryntumSchedulerBase.d.ts +2036 -0
  153. package/lib/BryntumSchedulerBase.js +641 -0
  154. package/lib/BryntumSchedulerBase.js.map +1 -0
  155. package/lib/BryntumSchedulerDatePicker.d.ts +313 -0
  156. package/lib/BryntumSchedulerDatePicker.js +216 -0
  157. package/lib/BryntumSchedulerDatePicker.js.map +1 -0
  158. package/lib/BryntumSchedulerProjectModel.d.ts +90 -0
  159. package/lib/BryntumSchedulerProjectModel.js +98 -0
  160. package/lib/BryntumSchedulerProjectModel.js.map +1 -0
  161. package/lib/BryntumSlideToggle.d.ts +239 -0
  162. package/lib/BryntumSlideToggle.js +168 -0
  163. package/lib/BryntumSlideToggle.js.map +1 -0
  164. package/lib/BryntumSlider.d.ts +184 -0
  165. package/lib/BryntumSlider.js +142 -0
  166. package/lib/BryntumSlider.js.map +1 -0
  167. package/lib/BryntumSplitter.d.ts +174 -0
  168. package/lib/BryntumSplitter.js +130 -0
  169. package/lib/BryntumSplitter.js.map +1 -0
  170. package/lib/BryntumTabPanel.d.ts +249 -0
  171. package/lib/BryntumTabPanel.js +178 -0
  172. package/lib/BryntumTabPanel.js.map +1 -0
  173. package/lib/BryntumTextAreaField.d.ts +228 -0
  174. package/lib/BryntumTextAreaField.js +164 -0
  175. package/lib/BryntumTextAreaField.js.map +1 -0
  176. package/lib/BryntumTextAreaPickerField.d.ts +232 -0
  177. package/lib/BryntumTextAreaPickerField.js +170 -0
  178. package/lib/BryntumTextAreaPickerField.js.map +1 -0
  179. package/lib/BryntumTextField.d.ts +229 -0
  180. package/lib/BryntumTextField.js +166 -0
  181. package/lib/BryntumTextField.js.map +1 -0
  182. package/lib/BryntumThemeCombo.d.ts +17 -0
  183. package/lib/BryntumThemeCombo.js +75 -0
  184. package/lib/BryntumThemeCombo.js.map +1 -0
  185. package/lib/BryntumTimeField.d.ts +238 -0
  186. package/lib/BryntumTimeField.js +175 -0
  187. package/lib/BryntumTimeField.js.map +1 -0
  188. package/lib/BryntumTimePicker.d.ts +192 -0
  189. package/lib/BryntumTimePicker.js +154 -0
  190. package/lib/BryntumTimePicker.js.map +1 -0
  191. package/lib/BryntumTimelineHistogram.d.ts +1183 -0
  192. package/lib/BryntumTimelineHistogram.js +448 -0
  193. package/lib/BryntumTimelineHistogram.js.map +1 -0
  194. package/lib/BryntumToolbar.d.ts +209 -0
  195. package/lib/BryntumToolbar.js +155 -0
  196. package/lib/BryntumToolbar.js.map +1 -0
  197. package/lib/BryntumTreeCombo.d.ts +266 -0
  198. package/lib/BryntumTreeCombo.js +202 -0
  199. package/lib/BryntumTreeCombo.js.map +1 -0
  200. package/lib/BryntumTreeGrid.d.ts +843 -0
  201. package/lib/BryntumTreeGrid.js +334 -0
  202. package/lib/BryntumTreeGrid.js.map +1 -0
  203. package/lib/BryntumUndoRedo.d.ts +189 -0
  204. package/lib/BryntumUndoRedo.js +152 -0
  205. package/lib/BryntumUndoRedo.js.map +1 -0
  206. package/lib/BryntumViewPresetCombo.d.ts +215 -0
  207. package/lib/BryntumViewPresetCombo.js +158 -0
  208. package/lib/BryntumViewPresetCombo.js.map +1 -0
  209. package/lib/BryntumWidget.d.ts +160 -0
  210. package/lib/BryntumWidget.js +125 -0
  211. package/lib/BryntumWidget.js.map +1 -0
  212. package/lib/BryntumYearPicker.d.ts +240 -0
  213. package/lib/BryntumYearPicker.js +177 -0
  214. package/lib/BryntumYearPicker.js.map +1 -0
  215. package/lib/WrapperHelper.d.ts +26 -0
  216. package/lib/WrapperHelper.js +569 -0
  217. package/lib/WrapperHelper.js.map +1 -0
  218. package/lib/index.d.ts +71 -0
  219. package/lib/index.js +72 -0
  220. package/lib/index.js.map +1 -0
  221. package/license.pdf +0 -0
  222. package/licenses.md +310 -0
  223. package/package.json +25 -0
  224. package/src/BryntumAIFilterField.tsx +998 -0
  225. package/src/BryntumButton.tsx +887 -0
  226. package/src/BryntumButtonGroup.tsx +902 -0
  227. package/src/BryntumChatPanel.tsx +1082 -0
  228. package/src/BryntumCheckbox.tsx +1000 -0
  229. package/src/BryntumCheckboxGroup.tsx +1116 -0
  230. package/src/BryntumChecklistFilterCombo.tsx +1241 -0
  231. package/src/BryntumChipView.tsx +914 -0
  232. package/src/BryntumCodeEditor.tsx +1065 -0
  233. package/src/BryntumColorField.tsx +995 -0
  234. package/src/BryntumCombo.tsx +1230 -0
  235. package/src/BryntumContainer.tsx +861 -0
  236. package/src/BryntumDateField.tsx +1055 -0
  237. package/src/BryntumDatePicker.tsx +1340 -0
  238. package/src/BryntumDateRangeField.tsx +1057 -0
  239. package/src/BryntumDateTimeField.tsx +942 -0
  240. package/src/BryntumDemoCodeEditor.tsx +1081 -0
  241. package/src/BryntumDemoHeader.tsx +160 -0
  242. package/src/BryntumDisplayField.tsx +979 -0
  243. package/src/BryntumDurationField.tsx +1038 -0
  244. package/src/BryntumEditor.tsx +1013 -0
  245. package/src/BryntumEventColorField.tsx +995 -0
  246. package/src/BryntumFieldFilterPicker.tsx +943 -0
  247. package/src/BryntumFieldFilterPickerGroup.tsx +976 -0
  248. package/src/BryntumFieldSet.tsx +1058 -0
  249. package/src/BryntumFileField.tsx +982 -0
  250. package/src/BryntumFilePicker.tsx +888 -0
  251. package/src/BryntumFilterField.tsx +1023 -0
  252. package/src/BryntumFullscreenButton.tsx +45 -0
  253. package/src/BryntumGrid.tsx +2402 -0
  254. package/src/BryntumGridBase.tsx +2399 -0
  255. package/src/BryntumGridChartDesigner.tsx +728 -0
  256. package/src/BryntumGridFieldFilterPicker.tsx +956 -0
  257. package/src/BryntumGridFieldFilterPickerGroup.tsx +970 -0
  258. package/src/BryntumGroupBar.tsx +914 -0
  259. package/src/BryntumHint.tsx +1125 -0
  260. package/src/BryntumLabel.tsx +720 -0
  261. package/src/BryntumList.tsx +891 -0
  262. package/src/BryntumMenu.tsx +1143 -0
  263. package/src/BryntumMonthPicker.tsx +1056 -0
  264. package/src/BryntumNumberField.tsx +1025 -0
  265. package/src/BryntumPagingToolbar.tsx +924 -0
  266. package/src/BryntumPanel.tsx +1035 -0
  267. package/src/BryntumPasswordField.tsx +969 -0
  268. package/src/BryntumProjectCombo.tsx +1232 -0
  269. package/src/BryntumRadio.tsx +1000 -0
  270. package/src/BryntumRadioGroup.tsx +1088 -0
  271. package/src/BryntumResourceCombo.tsx +1235 -0
  272. package/src/BryntumResourceFilter.tsx +930 -0
  273. package/src/BryntumScheduler.tsx +5182 -0
  274. package/src/BryntumSchedulerBase.tsx +5180 -0
  275. package/src/BryntumSchedulerDatePicker.tsx +1364 -0
  276. package/src/BryntumSchedulerProjectModel.tsx +423 -0
  277. package/src/BryntumSlideToggle.tsx +1000 -0
  278. package/src/BryntumSlider.tsx +815 -0
  279. package/src/BryntumSplitter.tsx +754 -0
  280. package/src/BryntumTabPanel.tsx +1087 -0
  281. package/src/BryntumTextAreaField.tsx +981 -0
  282. package/src/BryntumTextAreaPickerField.tsx +1002 -0
  283. package/src/BryntumTextField.tsx +987 -0
  284. package/src/BryntumThemeCombo.tsx +101 -0
  285. package/src/BryntumTimeField.tsx +1036 -0
  286. package/src/BryntumTimePicker.tsx +893 -0
  287. package/src/BryntumTimelineHistogram.tsx +3425 -0
  288. package/src/BryntumToolbar.tsx +917 -0
  289. package/src/BryntumTreeCombo.tsx +1230 -0
  290. package/src/BryntumTreeGrid.tsx +2401 -0
  291. package/src/BryntumUndoRedo.tsx +885 -0
  292. package/src/BryntumViewPresetCombo.tsx +914 -0
  293. package/src/BryntumWidget.tsx +715 -0
  294. package/src/BryntumYearPicker.tsx +1070 -0
  295. package/src/WrapperHelper.tsx +1125 -0
  296. package/src/index.ts +76 -0
@@ -0,0 +1,569 @@
1
+ import React from 'react';
2
+ import ReactDOM, { flushSync } from 'react-dom';
3
+ import { DomHelper, StringHelper, Widget } from '@bryntum/scheduler';
4
+ function devWarning(clsName, msg) {
5
+ var _a;
6
+ if (((_a = window.bryntum) === null || _a === void 0 ? void 0 : _a.isTestEnv) || process.env.NODE_ENV === 'development') {
7
+ console.warn(`Bryntum${clsName}Component development warning!\n${msg}\n` +
8
+ 'Please check React integration guide: https://bryntum.com/products/scheduler/docs/guide/Scheduler/integration/react/guide');
9
+ }
10
+ }
11
+ function devWarningContainer(clsName, containerParam) {
12
+ devWarning(clsName, `Using "${containerParam}" parameter for configuration is not recommended.\n` +
13
+ "Widget is placed automatically inside it's container element.\n" +
14
+ `Solution: remove "${containerParam}" parameter from configuration.`);
15
+ }
16
+ function devWarningConfigProp(clsName, prop) {
17
+ devWarning(clsName, `Using "${prop}" parameter for configuration is not recommended.\n` +
18
+ `Solution: Use separate parameter for each "${prop}" value to enable reactive updates of the API instance`);
19
+ }
20
+ function devWarningProjectProp(clsName) {
21
+ devWarning(clsName, 'Using the "project" prop with inner store configurations is not recommended.\n' +
22
+ `Solution: Use an instance of the 'ProjectModel' class or the '<Bryntum${clsName}ProjectModel/>' component`);
23
+ }
24
+ function isReactElement(element) {
25
+ return Boolean((element === null || element === void 0 ? void 0 : element.$$typeof) === Symbol.for('react.element') || (element === null || element === void 0 ? void 0 : element.$$typeof) === Symbol.for('react.transitional.element'));
26
+ }
27
+ function createConfig(reactInstance) {
28
+ const { element, props, constructor } = reactInstance, { instanceClass, instanceName, isView } = constructor, filter = (arr) => arr.filter(prop => props[prop] !== undefined), configNames = filter(constructor.configNames || []), propertyConfigNames = filter(constructor.propertyConfigNames || []), propertyNames = filter(constructor.propertyNames || []), featureNames = filter(constructor.featureNames || []), bryntumConfig = {
29
+ adopt: undefined,
30
+ appendTo: undefined,
31
+ href: undefined,
32
+ reactComponent: reactInstance,
33
+ listeners: {},
34
+ features: {},
35
+ hasFrameworkRenderer: isView ? hasFrameworkRenderer : undefined,
36
+ processCellContent: isView ? processCellContent : undefined,
37
+ processCellEditor: isView ? processCellEditor : undefined,
38
+ processEventContent: isView ? processEventContent : undefined,
39
+ processTaskItemContent: isView ? processTaskItemContent : undefined,
40
+ processResourceHeader: isView ? processResourceHeader : undefined
41
+ };
42
+ const isDataStoreConfig = (prop) => {
43
+ if (reactInstance.dataStores) {
44
+ const dataStoreNames = Object.values(reactInstance.dataStores);
45
+ return dataStoreNames.includes(prop) || dataStoreNames.includes(`${prop}Data`);
46
+ }
47
+ };
48
+ configNames
49
+ .concat(propertyConfigNames)
50
+ .concat(featureNames)
51
+ .forEach(prop => {
52
+ applyPropValue(bryntumConfig, prop, props[prop]);
53
+ if (['features', 'config'].includes(prop) && !isDataStoreConfig(prop)) {
54
+ devWarningConfigProp(instanceClass.$name, prop);
55
+ }
56
+ if (prop === 'project' && reactInstance.projectStores) {
57
+ if (Object.values(reactInstance.dataStores).some(store => props[prop][store])) {
58
+ devWarningProjectProp(instanceClass.$name);
59
+ }
60
+ }
61
+ });
62
+ reactInstance.configNames = configNames;
63
+ reactInstance.propertyNames = configNames
64
+ .concat(propertyNames)
65
+ .concat(propertyConfigNames)
66
+ .concat(featureNames);
67
+ if (reactInstance.dataStores) {
68
+ Object.values(reactInstance.dataStores).forEach((dataName) => {
69
+ if (props[dataName]) {
70
+ bryntumConfig[dataName] = props[dataName];
71
+ }
72
+ });
73
+ }
74
+ if (reactInstance.propertyConfigNames) {
75
+ delete reactInstance.propertyConfigNames;
76
+ }
77
+ if (reactInstance.featureNames) {
78
+ delete reactInstance.featureNames;
79
+ }
80
+ const containerParam = ['adopt', 'appendTo', 'insertAfter', 'insertBefore'].find(prop => bryntumConfig[prop]);
81
+ if (!containerParam) {
82
+ if (instanceName === 'Button') {
83
+ bryntumConfig.appendTo = element;
84
+ }
85
+ else {
86
+ bryntumConfig.adopt = element;
87
+ }
88
+ }
89
+ else {
90
+ devWarningContainer(instanceClass.$name, containerParam);
91
+ }
92
+ return bryntumConfig;
93
+ }
94
+ function applyPropValue(configOrInstance, prop, value, isConfig = true) {
95
+ var _a;
96
+ if ((_a = value === null || value === void 0 ? void 0 : value.current) === null || _a === void 0 ? void 0 : _a.instance) {
97
+ value = value.current.instance;
98
+ }
99
+ if (prop === 'features' && typeof value === 'object') {
100
+ Object.keys(value).forEach(key => applyPropValue(configOrInstance, `${key}Feature`, value[key], isConfig));
101
+ }
102
+ else if (prop === 'config' && typeof value === 'object') {
103
+ Object.keys(value).forEach(key => applyPropValue(configOrInstance, key, value[key], isConfig));
104
+ }
105
+ else if (prop === 'columns' && !isConfig) {
106
+ configOrInstance.columns = value;
107
+ }
108
+ else if (prop.endsWith('Feature')) {
109
+ const { features } = configOrInstance, featureName = prop.replace('Feature', '');
110
+ if (isConfig) {
111
+ features[featureName] = value;
112
+ }
113
+ else {
114
+ const feature = features[featureName];
115
+ if (feature) {
116
+ feature.setConfig(value);
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ configOrInstance[prop] = value;
122
+ }
123
+ }
124
+ function createWidget(component) {
125
+ const { instanceClass, isView } = component.constructor, config = createConfig(component), instance = instanceClass.$name === 'Widget' ? Widget.create(config) : new instanceClass(config);
126
+ if (isView) {
127
+ component[StringHelper.uncapitalize(instanceClass.$name) + 'Instance'] = instance;
128
+ }
129
+ if (isView) {
130
+ component[StringHelper.uncapitalize(instanceClass.$name) + 'Instance'] = instance;
131
+ const subscribeStores = (storeInstance, stores) => {
132
+ if (stores) {
133
+ Object.keys(stores).forEach(storeName => {
134
+ const store = storeInstance[storeName];
135
+ if (store) {
136
+ if (store.syncDataOnLoad == null && !store.readUrl && !store.lazyLoad && (!store.crudManager || !store.crudManager.loadUrl)) {
137
+ store.syncDataOnLoad = true;
138
+ }
139
+ store.on('beforeRemove', (context) => beforeRemoveRecords(component, context));
140
+ }
141
+ });
142
+ }
143
+ };
144
+ subscribeStores(component.projectStores ? instance.project : instance, component.dataStores);
145
+ }
146
+ if (config['data']) {
147
+ instance.lastDataset = config['data'].slice();
148
+ }
149
+ return instance;
150
+ }
151
+ function getPortalId(id, columnId) {
152
+ return `portal-${id}-${columnId}`;
153
+ }
154
+ function deletePortal(component, portalId) {
155
+ var _a;
156
+ const portal = component.state.portals.get(portalId);
157
+ if (portal) {
158
+ const portalContainer = portal.containerInfo;
159
+ component.state.portals.delete(portalId);
160
+ (_a = portalContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(portalContainer);
161
+ }
162
+ }
163
+ function releaseReactCell(component, cellElement) {
164
+ const { id, columnId, hasPortal } = cellElement._domData;
165
+ if (hasPortal) {
166
+ const portalId = getPortalId(id, columnId);
167
+ deletePortal(component, portalId);
168
+ }
169
+ }
170
+ function beforeRemoveRecords(component, { records, removingAll }) {
171
+ const { instance } = component;
172
+ if (removingAll) {
173
+ [...component.state.portals.keys()].forEach(portalId => deletePortal(component, portalId));
174
+ }
175
+ else {
176
+ records.forEach(record => {
177
+ const row = instance.getRowById ? instance.getRowById(record.id) : undefined;
178
+ if (row) {
179
+ row.cells.forEach((cell) => {
180
+ releaseReactCell(component, cell);
181
+ });
182
+ }
183
+ });
184
+ }
185
+ }
186
+ function updateGeneration(component, thisTick = false, callback = () => { }) {
187
+ const updateState = () => {
188
+ component.setState((currentState) => {
189
+ return Object.assign(Object.assign({}, currentState), { generation: currentState.generation + 1 });
190
+ }, callback);
191
+ };
192
+ if (thisTick) {
193
+ updateState();
194
+ }
195
+ else {
196
+ requestAnimationFrame(updateState);
197
+ }
198
+ }
199
+ function shouldComponentUpdate(component, nextProps, nextState) {
200
+ var _a;
201
+ const { props, instance, propertyNames } = component;
202
+ propertyNames.forEach((prop) => {
203
+ if (props[prop] !== nextProps[prop]) {
204
+ applyPropValue(instance, prop, nextProps[prop], false);
205
+ }
206
+ });
207
+ return (nextState === null || nextState === void 0 ? void 0 : nextState.generation) !== ((_a = component.state) === null || _a === void 0 ? void 0 : _a.generation);
208
+ }
209
+ function hasFrameworkRenderer({ cellContent }) {
210
+ return DomHelper.isReactElement(cellContent);
211
+ }
212
+ function processCellContent({ rendererData, cellElementData, rendererHtml }) {
213
+ const component = this.reactComponent, { state, portalsCache, portalContainerClass } = component, { cellElement, column, record } = rendererData, portalId = getPortalId(record.id, column.id), renderElement = cellElement.querySelector(column.editTargetSelector) || cellElement;
214
+ if (!renderElement) {
215
+ return;
216
+ }
217
+ if (rendererHtml &&
218
+ DomHelper.isReactElement(rendererHtml) &&
219
+ !record.meta.specialRow) {
220
+ if (renderElement.portalContainer &&
221
+ renderElement.portalContainer.dataset.portalId === portalId) {
222
+ portalsCache.appendChild(renderElement.portalContainer);
223
+ renderElement.portalContainer = null;
224
+ }
225
+ let portal = state.portals.get(portalId), forceFlushSync = false;
226
+ if (rendererData.isMeasuring) {
227
+ if (portal) {
228
+ const portalContainer = portal.containerInfo, parent = portalContainer.parentNode;
229
+ cellElement.style.width = 'auto';
230
+ const cellElementWidth = cellElement.offsetWidth;
231
+ cellElement.appendChild(portalContainer);
232
+ const width = portalContainer.offsetWidth;
233
+ parent.appendChild(portalContainer);
234
+ cellElement.style.width = `${width + cellElementWidth}px`;
235
+ }
236
+ return;
237
+ }
238
+ if (portal && (portal.generation !== record.generation || this.isExporting || this.$isCollapsing)) {
239
+ deletePortal(component, portalId);
240
+ portal = null;
241
+ forceFlushSync = true;
242
+ }
243
+ const childPortalContainer = renderElement.querySelector(`.${portalContainerClass}`);
244
+ if (childPortalContainer && childPortalContainer.dataset.portalId !== portalId) {
245
+ portalsCache.appendChild(childPortalContainer);
246
+ }
247
+ if (renderElement.textContent && renderElement === cellElement) {
248
+ renderElement.textContent = '';
249
+ }
250
+ if (portal) {
251
+ renderElement.appendChild(portal.containerInfo);
252
+ renderElement.portalContainer = portal.containerInfo;
253
+ }
254
+ else {
255
+ const portalContainer = DomHelper.append(renderElement, {
256
+ tag: 'div',
257
+ className: portalContainerClass,
258
+ dataset: { portalId }
259
+ });
260
+ renderElement.portalContainer = portalContainer;
261
+ portal = ReactDOM.createPortal(rendererHtml, portalContainer, portalId);
262
+ state.portals.set(portalId, portal);
263
+ if (forceFlushSync) {
264
+ flushSync(() => updateGeneration(component, true));
265
+ forceFlushSync = false;
266
+ }
267
+ else {
268
+ updateGeneration(component, this.isExporting);
269
+ }
270
+ }
271
+ cellElementData.hasPortal = true;
272
+ portal.generation = record.generation;
273
+ }
274
+ else if (!rendererHtml && cellElementData.hasPortal) {
275
+ cellElement.portalContainer.remove();
276
+ cellElementData.hasPortal = false;
277
+ }
278
+ }
279
+ function processCellEditor({ editor, field }) {
280
+ const component = this.reactComponent;
281
+ if (!component || typeof editor !== 'function') {
282
+ return;
283
+ }
284
+ const wrapperWidget = new Widget({
285
+ name: field,
286
+ allowMouseEvents: true,
287
+ assignValue(values, key, value) {
288
+ this.setValue(value);
289
+ }
290
+ });
291
+ const widgetRef = React.createRef();
292
+ wrapperWidget['reactRef'] = widgetRef;
293
+ const editorComponent = editor(widgetRef, this);
294
+ if (!DomHelper.isReactElement(editorComponent)) {
295
+ throw new Error('Expect a React element');
296
+ }
297
+ let editorValidityChecked = false;
298
+ wrapperWidget.setValue = async (value) => {
299
+ const widget = widgetRef.current;
300
+ if (widget) {
301
+ if (!editorValidityChecked) {
302
+ const cellMethods = ['setValue', 'getValue', 'isValid', 'focus'], misses = cellMethods.filter(fn => !(fn in widget));
303
+ if (misses.length > 0) {
304
+ throw new Error(`Missing method(s) ${misses.join(', ')} in ${widget.constructor.name}. Cell editors must ${cellMethods.join(', ')}`);
305
+ }
306
+ editorValidityChecked = true;
307
+ }
308
+ const context = wrapperWidget.owner['cellEditorContext'];
309
+ await widget.setValue(value, context);
310
+ }
311
+ else {
312
+ wrapperWidget.firstValue = value;
313
+ }
314
+ };
315
+ Object.defineProperty(wrapperWidget, 'value', {
316
+ enumerable: true,
317
+ configurable: true,
318
+ get() {
319
+ const widget = widgetRef.current;
320
+ return widget === null || widget === void 0 ? void 0 : widget.getValue();
321
+ }
322
+ });
323
+ Object.defineProperty(wrapperWidget, 'isValid', {
324
+ enumerable: true,
325
+ configurable: true,
326
+ get() {
327
+ const widget = widgetRef.current;
328
+ return widget === null || widget === void 0 ? void 0 : widget.isValid();
329
+ }
330
+ });
331
+ wrapperWidget.focus = () => {
332
+ var _a;
333
+ const widget = widgetRef.current;
334
+ if (!widget) {
335
+ wrapperWidget.focusPending = true;
336
+ }
337
+ else {
338
+ (_a = widget.focus) === null || _a === void 0 ? void 0 : _a.call(widget);
339
+ }
340
+ };
341
+ const portal = ReactDOM.createPortal(editorComponent, wrapperWidget.element);
342
+ wrapperWidget['reactPortal'] = portal;
343
+ const { state } = component;
344
+ state.portals.set(`portal-${field}`, portal);
345
+ updateGeneration(component, true, () => {
346
+ if (wrapperWidget.firstValue !== undefined) {
347
+ wrapperWidget.setValue(wrapperWidget.firstValue);
348
+ delete wrapperWidget.firstValue;
349
+ }
350
+ if (wrapperWidget.focusPending) {
351
+ wrapperWidget.focus();
352
+ delete wrapperWidget.focusPending;
353
+ }
354
+ });
355
+ return { editor: wrapperWidget };
356
+ }
357
+ function processWidgetContent({ reactElement, widget, reactComponent, contentElement }) {
358
+ var _a;
359
+ const portals = (_a = reactComponent === null || reactComponent === void 0 ? void 0 : reactComponent.state) === null || _a === void 0 ? void 0 : _a.portals, portalId = widget === null || widget === void 0 ? void 0 : widget.id;
360
+ if (isReactElement(reactElement)) {
361
+ if (!portals.has(portalId) && widget.html) {
362
+ widget.contentElement.innerHTML = '';
363
+ }
364
+ const portal = ReactDOM.createPortal(reactElement, contentElement || widget.contentElement);
365
+ portals.set(portalId, portal);
366
+ if (widget.isTooltip && !widget.html) {
367
+ flushSync(() => updateGeneration(reactComponent, true));
368
+ }
369
+ else {
370
+ updateGeneration(reactComponent, true);
371
+ }
372
+ return portal;
373
+ }
374
+ else if (portals === null || portals === void 0 ? void 0 : portals.has(portalId)) {
375
+ portals.delete(portalId);
376
+ flushSync(() => updateGeneration(reactComponent, true));
377
+ }
378
+ }
379
+ function processTaskItemContent({ jsx, targetElement, reactComponent, domConfig }) {
380
+ if (!reactComponent || !jsx) {
381
+ return;
382
+ }
383
+ const { state } = reactComponent, { portals } = state, cardElement = targetElement.closest('.b-task-board-card'), portalId = `task-item-${domConfig.reference}-${cardElement === null || cardElement === void 0 ? void 0 : cardElement.elementData.taskId}`, portal = ReactDOM.createPortal(jsx, targetElement, portalId);
384
+ portals.set(portalId, portal);
385
+ updateGeneration(reactComponent);
386
+ }
387
+ function processCalendarEventContent({ jsx, action, domConfig, targetElement, reactComponent }) {
388
+ var _a, _b, _c, _d, _e;
389
+ const me = this, returnValue = false, { state } = reactComponent, { portals } = state, wrap = targetElement.closest('.b-cal-event-wrap'), dataHolder = targetElement.closest('[data-date]'), refHolder = targetElement.closest('[data-ref]'), mode = typeof this.mode === 'string' ? this.mode : (_b = (_a = this.mode) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.slice(0, 4), lastPortalId = wrap === null || wrap === void 0 ? void 0 : wrap.dataset.lastPortalId, portalKey = ((_c = domConfig.dataset) === null || _c === void 0 ? void 0 : _c.date) || ((_d = (dataHolder)) === null || _d === void 0 ? void 0 : _d.dataset.date), containerRef = (_e = refHolder === null || refHolder === void 0 ? void 0 : refHolder.dataset) === null || _e === void 0 ? void 0 : _e.ref;
390
+ reactComponent.syncContent = reactComponent.syncContent || function (fn) {
391
+ flushSync(fn);
392
+ };
393
+ let portalId = `portal-${mode}-${wrap === null || wrap === void 0 ? void 0 : wrap.dataset.eventId}`;
394
+ me.portalKey = portalKey === undefined ? me.portalKey : portalKey;
395
+ me.containerRef = containerRef === undefined ? me.containerRef : containerRef;
396
+ if (action === 'none' || action === 'reuseElement') {
397
+ return returnValue;
398
+ }
399
+ if (action === 'removeElement' && lastPortalId) {
400
+ portals.delete(lastPortalId);
401
+ updateGeneration(reactComponent);
402
+ }
403
+ if (jsx && wrap) {
404
+ portalId = `${portalId}-${me.portalKey}-${me.containerRef}`;
405
+ const parent = wrap.querySelector('.b-cal-event-desc');
406
+ parent.innerHTML = '';
407
+ const jsxContainer = DomHelper.createElement({
408
+ className: 'b-jsx-container',
409
+ parent,
410
+ retainElement: true
411
+ }), portal = ReactDOM.createPortal(jsx, jsxContainer);
412
+ portals.set(portalId, portal);
413
+ reactComponent.syncContent(() => {
414
+ updateGeneration(reactComponent, true);
415
+ });
416
+ wrap.dataset.lastPortalId = portalId;
417
+ }
418
+ return returnValue;
419
+ }
420
+ function generateEventPortalId(assignmentRecord, eventRecord, segment, isExporting) {
421
+ var _a;
422
+ const isRecurring = (eventRecord === null || eventRecord === void 0 ? void 0 : eventRecord.isRecurring) || (eventRecord === null || eventRecord === void 0 ? void 0 : eventRecord.isOccurrence);
423
+ return `assignment-${assignmentRecord === null || assignmentRecord === void 0 ? void 0 : assignmentRecord.id}${isRecurring ? '-' + (((_a = eventRecord.recurrence) === null || _a === void 0 ? void 0 : _a.id) || '') : ''}${segment ? '-' + segment : ''}${isExporting ? '-export' : ''}`;
424
+ }
425
+ function deleteNestedEventPortals(component, parentEventRecord, resourceRecord, isExporting) {
426
+ var _a, _b;
427
+ const children = parentEventRecord === null || parentEventRecord === void 0 ? void 0 : parentEventRecord.children;
428
+ if (!(children === null || children === void 0 ? void 0 : children.length)) {
429
+ return;
430
+ }
431
+ const { portals } = component.state;
432
+ for (const childEvent of children) {
433
+ const assignmentRecord = (_a = childEvent.assignments) === null || _a === void 0 ? void 0 : _a.find((a) => a.resourceId === (resourceRecord === null || resourceRecord === void 0 ? void 0 : resourceRecord.id));
434
+ if (assignmentRecord) {
435
+ const portalId = generateEventPortalId(assignmentRecord, null, '', isExporting);
436
+ if (portals.has(portalId)) {
437
+ deletePortal(component, portalId);
438
+ }
439
+ }
440
+ if (childEvent.isParent && ((_b = childEvent.children) === null || _b === void 0 ? void 0 : _b.length)) {
441
+ deleteNestedEventPortals(component, childEvent, resourceRecord, isExporting);
442
+ }
443
+ }
444
+ }
445
+ function processEventContent({ jsx, action, targetElement, isRelease, reactComponent, scrolling, domConfig }) {
446
+ var _a, _b, _c, _d, _e;
447
+ if (this.type === 'calendar' && this.mode !== 'timeline' && ((_a = this.mode) === null || _a === void 0 ? void 0 : _a.type) !== 'scheduler') {
448
+ return processCalendarEventContent.call(this, arguments[0]);
449
+ }
450
+ const { eventResize, eventDrag, eventEdit, nestedEvents } = this.features;
451
+ if (!reactComponent || action === 'none' || ((eventResize === null || eventResize === void 0 ? void 0 : eventResize.isResizing) && !eventResize.dragging.completed && !scrolling)) {
452
+ return false;
453
+ }
454
+ const domConfigData = this.isVertical ? (_b = domConfig === null || domConfig === void 0 ? void 0 : domConfig.elementData) === null || _b === void 0 ? void 0 : _b.renderData : domConfig === null || domConfig === void 0 ? void 0 : domConfig.elementData;
455
+ let wrap = targetElement, parent = null, segment = '', returnValue = false;
456
+ if (jsx) {
457
+ if ((_c = domConfig === null || domConfig === void 0 ? void 0 : domConfig.dataset) === null || _c === void 0 ? void 0 : _c.isMilestone) {
458
+ wrap = targetElement.parentElement.parentElement.parentElement;
459
+ parent = targetElement.parentElement;
460
+ }
461
+ else {
462
+ wrap = targetElement.parentElement.parentElement;
463
+ parent = targetElement;
464
+ }
465
+ if (!wrap.elementData) {
466
+ wrap = wrap.closest('.b-sch-event-wrap');
467
+ segment = ((_d = parent.parentElement.dataset) === null || _d === void 0 ? void 0 : _d.segment) || '';
468
+ }
469
+ }
470
+ else if (!(domConfigData === null || domConfigData === void 0 ? void 0 : domConfigData.isWrap) || domConfigData.eventRecord.isResourceTimeRange) {
471
+ return returnValue;
472
+ }
473
+ const wrapData = this.isVertical ? wrap.elementData.renderData : wrap.elementData, currentData = domConfigData !== null && domConfigData !== void 0 ? domConfigData : wrapData, { assignmentRecord, eventRecord, resourceRecord } = currentData, { state } = reactComponent, { portals } = state, isRecurring = eventRecord.isRecurring || eventRecord.isOccurrence, isExporting = this.isExporting, portalId = generateEventPortalId(assignmentRecord, eventRecord, segment, isExporting);
474
+ if ((nestedEvents === null || nestedEvents === void 0 ? void 0 : nestedEvents.enabled) && action === 'reuseOwnElement' && eventRecord.isParent) {
475
+ const eventElement = targetElement.firstElementChild;
476
+ if (eventElement) {
477
+ eventElement.lastDomConfig = null;
478
+ }
479
+ }
480
+ reactComponent.syncContent = reactComponent.syncContent || function (fn) {
481
+ flushSync(fn);
482
+ };
483
+ if (isRelease && !isRecurring) {
484
+ let generationUpdateFlag = false;
485
+ if (portals.has(portalId)) {
486
+ deletePortal(reactComponent, portalId);
487
+ generationUpdateFlag = true;
488
+ }
489
+ if ((nestedEvents === null || nestedEvents === void 0 ? void 0 : nestedEvents.enabled) && ((_e = eventRecord.children) === null || _e === void 0 ? void 0 : _e.length)) {
490
+ deleteNestedEventPortals(reactComponent, eventRecord, resourceRecord, isExporting);
491
+ generationUpdateFlag = true;
492
+ }
493
+ if (generationUpdateFlag) {
494
+ updateGeneration(reactComponent, true);
495
+ }
496
+ }
497
+ else {
498
+ jsx = jsx || (action === 'reuseOwnElement' && wrap.lastJSX);
499
+ if (jsx) {
500
+ parent = parent || wrap.querySelector('.b-sch-event-content');
501
+ const portal = portals.get(portalId), updateContent = () => {
502
+ parent.innerHTML = '';
503
+ const jsxContainer = DomHelper.createElement({
504
+ className: 'b-jsx-container b-event-text-wrap',
505
+ parent,
506
+ retainElement: true
507
+ }), portal = ReactDOM.createPortal(jsx, jsxContainer);
508
+ portal.eventGeneration = wrap.elementData.eventGeneration;
509
+ wrap.lastJSX = jsx;
510
+ portals.set(portalId, portal);
511
+ if (isExporting) {
512
+ flushSync(() => updateGeneration(reactComponent, true));
513
+ }
514
+ else {
515
+ updateGeneration(reactComponent, true);
516
+ }
517
+ }, isEditing = eventEdit === null || eventEdit === void 0 ? void 0 : eventEdit.isEditing, isDragging = eventDrag === null || eventDrag === void 0 ? void 0 : eventDrag.isDragging;
518
+ if (!portal || isRecurring || isExporting || portal.eventGeneration !== wrap.elementData.eventGeneration) {
519
+ if ((scrolling || !isDragging) && !isEditing) {
520
+ updateContent();
521
+ }
522
+ else {
523
+ reactComponent.syncContent(updateContent);
524
+ }
525
+ }
526
+ returnValue = true;
527
+ }
528
+ }
529
+ return returnValue;
530
+ }
531
+ function processResourceHeader({ jsx, targetElement }) {
532
+ if (!jsx) {
533
+ return;
534
+ }
535
+ const { reactComponent } = this, { state } = reactComponent, { portals } = state, portalId = `resource-header-${targetElement.dataset.resourceId}`;
536
+ if (portals.has(portalId)) {
537
+ portals.delete(portalId);
538
+ updateGeneration(reactComponent, true);
539
+ }
540
+ portals.set(portalId, ReactDOM.createPortal(jsx, targetElement));
541
+ updateGeneration(reactComponent);
542
+ }
543
+ function handleReactElement(widget, element) {
544
+ var _a;
545
+ const parent = widget.closest((c) => Boolean(c.reactComponent)), reactComponent = (parent === null || parent === void 0 ? void 0 : parent.reactComponent) ||
546
+ ((_a = Widget.query((c) => { var _a; return Boolean((_a = c.reactComponent) === null || _a === void 0 ? void 0 : _a.state); })) === null || _a === void 0 ? void 0 : _a.reactComponent);
547
+ reactComponent === null || reactComponent === void 0 ? void 0 : reactComponent.processWidgetContent({
548
+ reactElement: element,
549
+ widget,
550
+ reactComponent
551
+ });
552
+ }
553
+ function handleReactHeaderElement(column, headerElement, html) {
554
+ const { reactComponent } = column.grid, contentElement = headerElement.querySelector('.b-grid-header-text-content');
555
+ reactComponent === null || reactComponent === void 0 ? void 0 : reactComponent.processWidgetContent({
556
+ reactElement: html,
557
+ widget: { id: column.id },
558
+ reactComponent,
559
+ contentElement
560
+ });
561
+ }
562
+ export { createWidget, shouldComponentUpdate, processWidgetContent };
563
+ window.bryntum = window.bryntum || {};
564
+ window.bryntum.react = {
565
+ isReactElement,
566
+ handleReactHeaderElement,
567
+ handleReactElement
568
+ };
569
+ //# sourceMappingURL=WrapperHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WrapperHelper.js","sourceRoot":"","sources":["../src/WrapperHelper.tsx"],"names":[],"mappings":"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"}