@arbisoft/react-design-tool 1.0.25 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,13 +40,13 @@ yarn add @arbisoft/react-design-tool
40
40
  #### ⚠️ Important: Installation Guide for React 18 and Below
41
41
 
42
42
  ```bash
43
- npm install @arbisoft/react-design-tool@1.0.25
43
+ npm install @arbisoft/react-design-tool@1.0.27
44
44
  ```
45
45
 
46
46
  OR
47
47
 
48
48
  ```bash
49
- yarn add @arbisoft/react-design-tool@1.0.25
49
+ yarn add @arbisoft/react-design-tool@1.0.27
50
50
 
51
51
  ```
52
52
 
@@ -321,3 +321,36 @@ const handleSave = async () => {
321
321
  // { elements: [array of elements], image: canvas image }
322
322
  };
323
323
  ```
324
+
325
+ #### 17. `onCreateNewTemplate` (Function)
326
+
327
+ A callback function that is triggered when a user clicks the **"New Template"** button from within the editor.
328
+ It receives the freshly generated array of canvas elements so you can store it in your own backend (e.g., as a custom template).
329
+
330
+ **Example:**
331
+
332
+ ```jsx
333
+ onCreateNewTemplate={(elements) => {
334
+ // Save new custom template to backend
335
+ axios.post('/api/templates', {
336
+ template_name: 'New Custom Template',
337
+ template_language_id: 2,
338
+ json_data: elements,
339
+ });
340
+ }}
341
+ ```
342
+
343
+ #### 18. `onTemplateSelect` (Function)
344
+
345
+ A callback function triggered whenever a user selects a template (default or custom) from the template sidebar.
346
+ It receives the backend `id` of the selected template (if available), or `null` if the canvas was reset (e.g., for a new template).
347
+
348
+
349
+ **Example:**
350
+
351
+ ```jsx
352
+ onTemplateSelect={(templateId) => {
353
+ console.log('User selected template ID:', templateId); // null if new template
354
+ setSelectedTemplateId(templateId);
355
+ }}
356
+ ```
package/dist/cjs/index.js CHANGED
@@ -5107,13 +5107,17 @@ var TemplateSideBar = function TemplateSideBar(_ref) {
5107
5107
  languageLocale = _ref.languageLocale,
5108
5108
  onDeleteCustomTemplate = _ref.onDeleteCustomTemplate,
5109
5109
  defaultTemplatesList = _ref.defaultTemplatesList,
5110
- customTemplatesList = _ref.customTemplatesList;
5110
+ customTemplatesList = _ref.customTemplatesList,
5111
+ onTemplateSelect = _ref.onTemplateSelect;
5111
5112
  var renderDefaultContent = React.useMemo(function () {
5112
5113
  return /*#__PURE__*/React.createElement(TemplatesContainer, null, defaultTemplatesList === null || defaultTemplatesList === void 0 ? void 0 : defaultTemplatesList.map(function (item, index) {
5113
5114
  return /*#__PURE__*/React.createElement(TemplateItem, {
5114
5115
  key: index,
5115
5116
  onClick: function onClick() {
5116
5117
  oncreateNewTemplate(item === null || item === void 0 ? void 0 : item.elements);
5118
+ if (typeof onTemplateSelect === 'function') {
5119
+ onTemplateSelect(item === null || item === void 0 ? void 0 : item.id);
5120
+ }
5117
5121
  }
5118
5122
  }, /*#__PURE__*/React.createElement(StyledImage, {
5119
5123
  src: item === null || item === void 0 ? void 0 : item.image,
@@ -5553,7 +5557,8 @@ var HelperSideBar = function HelperSideBar(_ref) {
5553
5557
  onDeleteCustomTemplate = _ref.onDeleteCustomTemplate,
5554
5558
  styleProps = _ref.styleProps,
5555
5559
  defaultText = _ref.defaultText,
5556
- languageLocale = _ref.languageLocale;
5560
+ languageLocale = _ref.languageLocale,
5561
+ onTemplateSelect = _ref.onTemplateSelect;
5557
5562
  return /*#__PURE__*/React.createElement(SideBarWrapper, {
5558
5563
  visible: selectedSideBarItem && helperSideBarVisible
5559
5564
  }, /*#__PURE__*/React.createElement(SideBarHeader, {
@@ -5568,6 +5573,7 @@ var HelperSideBar = function HelperSideBar(_ref) {
5568
5573
  onDeleteCustomTemplate: onDeleteCustomTemplate,
5569
5574
  defaultTemplatesList: defaultTemplatesList,
5570
5575
  customTemplatesList: customTemplatesList,
5576
+ onTemplateSelect: onTemplateSelect,
5571
5577
  styleProps: styleProps
5572
5578
  }) : selectedSideBarItem === (sideBarpillsList === null || sideBarpillsList === void 0 ? void 0 : sideBarpillsList.text) ? /*#__PURE__*/React.createElement(TextSideBar, {
5573
5579
  onAddTextToCanvas: onAddTextToCanvas,
@@ -5704,6 +5710,8 @@ var isPropValid = /* #__PURE__ */memoize(function (prop) {
5704
5710
  * @property {Function} onSave
5705
5711
  * @property {string} [saveButtonText]
5706
5712
  * @property {'en'|'ru'|'pl'|'de'|'es'|'fr'|'it'} [locale]
5713
+ * @property {Function} [onCreateNewTemplate] - called when user creates a new template, passes new canvas elements
5714
+ * @property {Function} [onTemplateSelect] - called when a template is selected, passes template id
5707
5715
  */
5708
5716
 
5709
5717
  /**
@@ -5736,7 +5744,9 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5736
5744
  showSaveButton = _ref.showSaveButton,
5737
5745
  saveButtonText = _ref.saveButtonText,
5738
5746
  _ref$locale = _ref.locale,
5739
- locale = _ref$locale === void 0 ? 'en' : _ref$locale;
5747
+ locale = _ref$locale === void 0 ? 'en' : _ref$locale,
5748
+ onCreateNewTemplate = _ref.onCreateNewTemplate,
5749
+ onTemplateSelect = _ref.onTemplateSelect;
5740
5750
  var stageRef = React.useRef(null);
5741
5751
  var _useState = React.useState(null),
5742
5752
  _useState2 = _slicedToArray(_useState, 2),
@@ -6322,6 +6332,14 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6322
6332
  setElements(_toConsumableArray(elems));
6323
6333
  setHistory([]);
6324
6334
  setRedoStack([]);
6335
+ if (typeof onCreateNewTemplate === 'function') {
6336
+ onCreateNewTemplate(elems);
6337
+ }
6338
+
6339
+ // Clear selected template ID
6340
+ if (typeof onTemplateSelect === 'function') {
6341
+ onTemplateSelect(null);
6342
+ }
6325
6343
  };
6326
6344
  var sendSelectedElementToBack = function sendSelectedElementToBack() {
6327
6345
  var copyElements = _toConsumableArray(elements);
@@ -6634,7 +6652,8 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6634
6652
  onDeleteCustomTemplate: onDeleteCustomTemplate,
6635
6653
  styleProps: styleProps,
6636
6654
  defaultText: defaultText,
6637
- languageLocale: languageLocale
6655
+ languageLocale: languageLocale,
6656
+ onTemplateSelect: onTemplateSelect
6638
6657
  }), loadingFonts ? null : /*#__PURE__*/React.createElement(Editor
6639
6658
  // canvasSize={canvasSize}
6640
6659
  , {