@bigbinary/neeto-templates-frontend 3.0.6 → 3.0.7

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 (59) hide show
  1. package/dist/.ready +1 -0
  2. package/dist/CreateTemplateModal.js +7 -234
  3. package/dist/CreateTemplateModal.js.map +1 -1
  4. package/dist/TemplateSettings.js +7 -20
  5. package/dist/TemplateSettings.js.map +1 -1
  6. package/dist/TemplateTags.js +2 -2
  7. package/dist/TemplateTags.js.map +1 -1
  8. package/dist/cjs/CreateTemplateModal.js +8 -235
  9. package/dist/cjs/CreateTemplateModal.js.map +1 -1
  10. package/dist/cjs/TemplateSettings.js +8 -21
  11. package/dist/cjs/TemplateSettings.js.map +1 -1
  12. package/dist/cjs/TemplateTags.js +1 -1
  13. package/dist/cjs/TemplateTags.js.map +1 -1
  14. package/dist/cjs/index.js +9 -6
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/v2/CreateTemplateModal.js +474 -0
  17. package/dist/cjs/v2/CreateTemplateModal.js.map +1 -0
  18. package/dist/cjs/v2/TemplateSettings.js +335 -0
  19. package/dist/cjs/v2/TemplateSettings.js.map +1 -0
  20. package/dist/cjs/v2/TemplateTags.js +89 -0
  21. package/dist/cjs/v2/TemplateTags.js.map +1 -0
  22. package/dist/cjs/v2/index.js +51 -0
  23. package/dist/cjs/v2/index.js.map +1 -0
  24. package/dist/custom-B69ooaxC.js +254 -0
  25. package/dist/custom-B69ooaxC.js.map +1 -0
  26. package/dist/custom-Y7OHRaLC.js +233 -0
  27. package/dist/custom-Y7OHRaLC.js.map +1 -0
  28. package/dist/index.js +9 -6
  29. package/dist/index.js.map +1 -1
  30. package/dist/query-BHYqZXXl.js.map +1 -1
  31. package/dist/{query-CIe6_co6.js → query-CI8q_ST0.js} +2 -2
  32. package/dist/{query-CIe6_co6.js.map → query-CI8q_ST0.js.map} +1 -1
  33. package/dist/template_tags-BsC73L5P.js +20 -0
  34. package/dist/template_tags-BsC73L5P.js.map +1 -0
  35. package/dist/template_tags-DRZa7U5R.js +22 -0
  36. package/dist/template_tags-DRZa7U5R.js.map +1 -0
  37. package/dist/{useTemplatesApi-AX5fydv5.js → templates-D92QbbVX.js} +3 -79
  38. package/dist/templates-D92QbbVX.js.map +1 -0
  39. package/dist/{useTemplatesApi-Cg_SmcAl.js → templates-Dmrt7dnT.js} +4 -77
  40. package/dist/templates-Dmrt7dnT.js.map +1 -0
  41. package/dist/useTemplatesApi-CFO1OLfz.js +83 -0
  42. package/dist/useTemplatesApi-CFO1OLfz.js.map +1 -0
  43. package/dist/useTemplatesApi-D0AEqebj.js +83 -0
  44. package/dist/useTemplatesApi-D0AEqebj.js.map +1 -0
  45. package/dist/useTemplatesApi-DSXELHFU.js +78 -0
  46. package/dist/useTemplatesApi-DSXELHFU.js.map +1 -0
  47. package/dist/useTemplatesApi-M6UMJYIX.js +78 -0
  48. package/dist/useTemplatesApi-M6UMJYIX.js.map +1 -0
  49. package/dist/v2/CreateTemplateModal.js +453 -0
  50. package/dist/v2/CreateTemplateModal.js.map +1 -0
  51. package/dist/v2/TemplateSettings.js +333 -0
  52. package/dist/v2/TemplateSettings.js.map +1 -0
  53. package/dist/v2/TemplateTags.js +87 -0
  54. package/dist/v2/TemplateTags.js.map +1 -0
  55. package/dist/v2/index.js +43 -0
  56. package/dist/v2/index.js.map +1 -0
  57. package/package.json +47 -35
  58. package/dist/useTemplatesApi-AX5fydv5.js.map +0 -1
  59. package/dist/useTemplatesApi-Cg_SmcAl.js.map +0 -1
@@ -0,0 +1,335 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
5
+ var formik$1 = require('@bigbinary/neeto-atoms/formik');
6
+ var classnames = require('classnames');
7
+ var neetoCist = require('@bigbinary/neeto-cist');
8
+ var MobilePreviewHeader = require('@bigbinary/neeto-molecules/v2/MobilePreviewHeader');
9
+ var reactI18next = require('react-i18next');
10
+ var reactRouterDom = require('react-router-dom');
11
+ var useTemplatesApi = require('../../useTemplatesApi-CFO1OLfz.js');
12
+ var utils = require('@bigbinary/neeto-tags-frontend/v2/utils');
13
+ var reactQuery = require('@tanstack/react-query');
14
+ var template_tags = require('../../template_tags-DRZa7U5R.js');
15
+ var query = require('../../query-BHYqZXXl.js');
16
+ require('../../templates-D92QbbVX.js');
17
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
18
+ var ImageUploader = require('@bigbinary/neeto-image-uploader-frontend/v2/ImageUploader');
19
+ var formik = require('formik');
20
+ var jsxRuntime = require('react/jsx-runtime');
21
+ var React = require('react');
22
+ var Container = require('@bigbinary/neeto-molecules/v2/Container');
23
+ var Header = require('@bigbinary/neeto-molecules/v2/Header');
24
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
25
+ var TagsComponent = require('@bigbinary/neeto-tags-frontend/v2/TagsComponent');
26
+ var constants = require('@bigbinary/neeto-commons-frontend/v2/constants');
27
+ var ramda = require('ramda');
28
+ require('@bigbinary/neeto-commons-frontend/react-utils');
29
+ require('axios');
30
+
31
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33
+ var useCreateTemplateTag = function useCreateTemplateTag(options) {
34
+ return reactQuery.useMutation(_objectSpread$1(_objectSpread$1({
35
+ mutationFn: template_tags.templateTagsApi.create
36
+ }, options), {}, {
37
+ onSuccess: function onSuccess() {
38
+ utils.refetchTags();
39
+ }
40
+ }));
41
+ };
42
+ var useFetchTemplateTags = function useFetchTemplateTags() {
43
+ return reactQuery.useQuery({
44
+ queryKey: [query.QUERY_KEYS.TEMPLATE_TAGS],
45
+ queryFn: template_tags.templateTagsApi.list
46
+ });
47
+ };
48
+
49
+ var FormikImageUploader = function FormikImageUploader(_ref) {
50
+ var name = _ref.name;
51
+ var _useField = formik.useField(name),
52
+ _useField2 = _slicedToArray(_useField, 3),
53
+ field = _useField2[0];
54
+ _useField2[1];
55
+ var setValue = _useField2[2].setValue;
56
+ var _useFormikContext = formik.useFormikContext(),
57
+ setFieldValue = _useFormikContext.setFieldValue;
58
+ var handleImageUpload = function handleImageUpload(file) {
59
+ setFieldValue("imageSignedId", file.signedId);
60
+ return setValue(file.url);
61
+ };
62
+ return /*#__PURE__*/jsxRuntime.jsx(ImageUploader, {
63
+ className: "h-56 w-full",
64
+ defaultImageSize: {
65
+ width: 512,
66
+ height: 288
67
+ },
68
+ fixedAspectRatio: {
69
+ width: 16,
70
+ height: 9
71
+ },
72
+ src: field.value,
73
+ uploadConfig: query.IMAGE_UPLOAD_CONFIG,
74
+ onUploadComplete: handleImageUpload
75
+ });
76
+ };
77
+
78
+ var PageWrapper = function PageWrapper(_ref) {
79
+ var children = _ref.children,
80
+ className = _ref.className;
81
+ return /*#__PURE__*/jsxRuntime.jsx(Container, {
82
+ className: className,
83
+ children: children
84
+ });
85
+ };
86
+ var PageHeader = function PageHeader(_ref2) {
87
+ var title = _ref2.title,
88
+ breadcrumbs = _ref2.breadcrumbs;
89
+ return /*#__PURE__*/jsxRuntime.jsx(Header, {
90
+ breadcrumbs: breadcrumbs,
91
+ title: title,
92
+ size: "small"
93
+ });
94
+ };
95
+ var customPropEqualityCheck = function customPropEqualityCheck(prevProps, nextProps) {
96
+ return prevProps.title === nextProps.title && prevProps.breadcrumbs === nextProps.breadcrumbs;
97
+ };
98
+ var MemoizedPageHeader = /*#__PURE__*/React.memo(PageHeader, customPropEqualityCheck);
99
+ var PageContent = function PageContent(_ref3) {
100
+ var children = _ref3.children,
101
+ _ref3$className = _ref3.className,
102
+ className = _ref3$className === void 0 ? "" : _ref3$className;
103
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
104
+ className: "w-full h-full",
105
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
106
+ className: classnames(["mx-auto max-w-7xl", className]),
107
+ children: children
108
+ })
109
+ });
110
+ };
111
+
112
+ var Tags = function Tags(_ref) {
113
+ var allTags = _ref.allTags,
114
+ selectedTags = _ref.selectedTags,
115
+ onUpdate = _ref.onUpdate,
116
+ onCreate = _ref.onCreate,
117
+ isLoading = _ref.isLoading,
118
+ _ref$title = _ref.title,
119
+ title = _ref$title === void 0 ? "" : _ref$title;
120
+ var handleTagSelect = function handleTagSelect(newTag) {
121
+ return onUpdate([].concat(_toConsumableArray(selectedTags), [newTag]));
122
+ };
123
+ var handleTagRemove = function handleTagRemove(removedTag) {
124
+ var updatedTags = neetoCist.removeBy({
125
+ value: removedTag.value
126
+ }, selectedTags);
127
+ onUpdate(updatedTags);
128
+ };
129
+ var handleTagCreate = function handleTagCreate(tagName) {
130
+ onCreate({
131
+ name: tagName
132
+ }, {
133
+ onSuccess: function onSuccess(_ref2) {
134
+ var tag = _ref2.tag;
135
+ return handleTagSelect({
136
+ value: tag.id,
137
+ label: tag.name
138
+ });
139
+ }
140
+ });
141
+ };
142
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
143
+ className: "w-full",
144
+ children: /*#__PURE__*/jsxRuntime.jsx(TagsComponent, {
145
+ allTags: allTags,
146
+ selectedTags: selectedTags,
147
+ title: title,
148
+ bodyProps: {
149
+ className: "p-0 w-full"
150
+ },
151
+ titleProps: {
152
+ weight: "medium",
153
+ style: "body2"
154
+ },
155
+ buttonProps: {
156
+ loading: isLoading,
157
+ disabled: isLoading,
158
+ iconPosition: "left"
159
+ },
160
+ onTagCreate: handleTagCreate,
161
+ onTagDelete: handleTagRemove,
162
+ onTagSelect: handleTagSelect
163
+ })
164
+ });
165
+ };
166
+
167
+ var Preview = function Preview(_ref) {
168
+ var template = _ref.template,
169
+ imageUrl = _ref.imageUrl;
170
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
171
+ className: "neeto-template bg-background flex flex-col overflow-hidden rounded shadow-xs",
172
+ tabIndex: 0,
173
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
174
+ className: "neeto-template__header",
175
+ children: /*#__PURE__*/jsxRuntime.jsx("img", {
176
+ className: "neeto-template__image",
177
+ "data-testid": "template-image-preview",
178
+ src: imageUrl || "".concat(constants.CLOUDFRONT_BASE_URL, "/images/neetoForm/default-form-template.svg")
179
+ })
180
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
181
+ className: "bg-background p-3 lg:p-5 flex items-center justify-between gap-2",
182
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
183
+ className: "text-foreground leading-normal",
184
+ "data-testid": "template-title-text",
185
+ variant: "body2",
186
+ weight: "medium",
187
+ children: template.title
188
+ })
189
+ })]
190
+ });
191
+ };
192
+
193
+ var buildSelectOptionsBy = function buildSelectOptionsBy(labelField) {
194
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
195
+ var valueField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
196
+ return options.map(function (option) {
197
+ return {
198
+ value: option[valueField],
199
+ label: option[labelField]
200
+ };
201
+ });
202
+ };
203
+ var buildTagOptions = function buildTagOptions() {
204
+ var tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
205
+ return neetoCist.renameKeys({
206
+ id: "value",
207
+ name: "label"
208
+ }, tags);
209
+ };
210
+ var buildTemplateUpdatePayload = function buildTemplateUpdatePayload(values) {
211
+ return {
212
+ image: values.imageSignedId || null,
213
+ tagIds: ramda.pluck("value", values === null || values === void 0 ? void 0 : values.tags)
214
+ };
215
+ };
216
+
217
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
218
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
219
+ var TemplateSettings = function TemplateSettings(_ref) {
220
+ var _ref$onCancelTemplate = _ref.onCancelTemplatePreview,
221
+ onCancelTemplatePreview = _ref$onCancelTemplate === void 0 ? "" : _ref$onCancelTemplate,
222
+ _ref$breadcrumbs = _ref.breadcrumbs,
223
+ breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
224
+ _ref$className = _ref.className,
225
+ className = _ref$className === void 0 ? "" : _ref$className,
226
+ _ref$resourceId = _ref.resourceId,
227
+ resourceId = _ref$resourceId === void 0 ? "id" : _ref$resourceId;
228
+ var _useParams = reactRouterDom.useParams(),
229
+ id = _useParams[resourceId];
230
+ var _useTranslation = reactI18next.useTranslation(),
231
+ t = _useTranslation.t;
232
+ var _useFetchTemplate = useTemplatesApi.useFetchTemplate({
233
+ resourceId: id
234
+ }),
235
+ data = _useFetchTemplate.data,
236
+ isFetchingTemplate = _useFetchTemplate.isLoading;
237
+ var _useUpdateTemplate = useTemplatesApi.useUpdateTemplate({
238
+ resourceId: id
239
+ }),
240
+ updateTemplate = _useUpdateTemplate.mutate,
241
+ isUpdatingTemplate = _useUpdateTemplate.isPending;
242
+ var _useCreateTemplateTag = useCreateTemplateTag(),
243
+ createTemplateTag = _useCreateTemplateTag.mutate,
244
+ isCreatingTags = _useCreateTemplateTag.isPending;
245
+ var _useFetchTemplateTags = useFetchTemplateTags(),
246
+ _useFetchTemplateTags2 = _useFetchTemplateTags.data,
247
+ templateTags = _useFetchTemplateTags2 === void 0 ? {} : _useFetchTemplateTags2,
248
+ isTagsLoading = _useFetchTemplateTags.isLoading;
249
+ var handleSubmit = function handleSubmit(values) {
250
+ updateTemplate({
251
+ template: buildTemplateUpdatePayload(values)
252
+ });
253
+ };
254
+ var isLoading = isFetchingTemplate || isTagsLoading;
255
+ var tags = buildTagOptions(data === null || data === void 0 ? void 0 : data.tags);
256
+ var resourceInitialValues = _objectSpread(_objectSpread({
257
+ imageUrl: null
258
+ }, data), {}, {
259
+ tags: tags
260
+ });
261
+ return /*#__PURE__*/jsxRuntime.jsx(PageWrapper, {
262
+ className: classnames("p-0", className),
263
+ children: /*#__PURE__*/jsxRuntime.jsx(PageContent, {
264
+ className: "h-full max-w-full mx-0",
265
+ children: isLoading ? /*#__PURE__*/jsxRuntime.jsx("div", {
266
+ className: "flex h-full w-full items-center justify-center",
267
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {})
268
+ }) : /*#__PURE__*/jsxRuntime.jsx(formik$1.Form, {
269
+ className: "h-full",
270
+ formikProps: {
271
+ enableReinitialize: true,
272
+ initialValues: resourceInitialValues,
273
+ onSubmit: handleSubmit
274
+ },
275
+ children: function children(_ref2) {
276
+ var values = _ref2.values,
277
+ setFieldValue = _ref2.setFieldValue;
278
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
279
+ className: "grid md:grid-cols-2 grid-cols-1 h-full",
280
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
281
+ className: "w-full h-full md:overflow-y-auto",
282
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
283
+ className: "md:px-10 px-5 pb-2",
284
+ children: [/*#__PURE__*/jsxRuntime.jsx(MemoizedPageHeader, {
285
+ breadcrumbs: breadcrumbs,
286
+ title: t("neetoTemplate.templateSettings.title")
287
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
288
+ className: "flex flex-col gap-6",
289
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
290
+ className: "flex flex-col gap-2",
291
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
292
+ children: t("neetoTemplate.templateSettings.imageLabel")
293
+ }), /*#__PURE__*/jsxRuntime.jsx(FormikImageUploader, {
294
+ name: "imageUrl"
295
+ })]
296
+ }), /*#__PURE__*/jsxRuntime.jsx(Tags, {
297
+ isLoading: isCreatingTags,
298
+ selectedTags: values.tags,
299
+ allTags: buildSelectOptionsBy("name", templateTags.tags),
300
+ title: t("neetoTemplate.templateSettings.categoryLabel"),
301
+ onCreate: createTemplateTag,
302
+ onUpdate: function onUpdate(tags) {
303
+ return setFieldValue("tags", tags);
304
+ }
305
+ })]
306
+ })]
307
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
308
+ className: "bg-background sticky bottom-0 py-6 md:px-10 px-5",
309
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.ActionBlock, {
310
+ isSubmitting: isUpdatingTemplate,
311
+ cancelButtonProps: {
312
+ to: onCancelTemplatePreview,
313
+ "data-testid": "reset-changes-button",
314
+ onClick: neetoCist.noop
315
+ }
316
+ })
317
+ })]
318
+ }), /*#__PURE__*/jsxRuntime.jsx(MobilePreviewHeader, {
319
+ className: "w-full md:hidden"
320
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
321
+ className: "bg-muted py-6 md:py-12 px-5 md:px-10 xl:px-16 w-full md:overflow-y-auto",
322
+ children: /*#__PURE__*/jsxRuntime.jsx(Preview, {
323
+ imageUrl: values.imageUrl,
324
+ template: data
325
+ })
326
+ })]
327
+ });
328
+ }
329
+ })
330
+ })
331
+ });
332
+ };
333
+
334
+ module.exports = TemplateSettings;
335
+ //# sourceMappingURL=TemplateSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateSettings.js","sources":["../../../app/javascript/src/v2/hooks/reactQuery/useTemplateTagsApi.js","../../../app/javascript/src/v2/components/TemplateSettings/Common/FormikImageUploader.jsx","../../../app/javascript/src/v2/components/TemplateSettings/Common/SinglePageLayout.jsx","../../../app/javascript/src/v2/components/TemplateSettings/Common/Tags.jsx","../../../app/javascript/src/v2/components/TemplateSettings/Preview.jsx","../../../app/javascript/src/v2/components/TemplateSettings/utils.js","../../../app/javascript/src/v2/components/TemplateSettings/index.jsx"],"sourcesContent":["import { refetchTags } from \"@bigbinary/neeto-tags-frontend/v2\";\nimport { useQuery, useMutation } from \"@tanstack/react-query\";\n\nimport templateTagsApi from \"src/apis/template_tags\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useCreateTemplateTag = options =>\n useMutation({\n mutationFn: templateTagsApi.create,\n ...options,\n onSuccess: () => {\n refetchTags();\n options?.onSuccess?.();\n },\n });\n\nconst useFetchTemplateTags = () =>\n useQuery({\n queryKey: [QUERY_KEYS.TEMPLATE_TAGS],\n queryFn: templateTagsApi.list,\n });\n\nexport { useCreateTemplateTag, useFetchTemplateTags };\n","// eslint-disable-next-line @bigbinary/neeto/use-webpack-alias\nimport { ImageUploader } from \"@bigbinary/neeto-image-uploader-frontend/v2\";\nimport { useField, useFormikContext } from \"formik\";\n\nimport { IMAGE_UPLOAD_CONFIG } from \"src/constants\";\n\nconst FormikImageUploader = ({ name }) => {\n const [field, _, { setValue }] = useField(name);\n const { setFieldValue } = useFormikContext();\n\n const handleImageUpload = file => {\n setFieldValue(\"imageSignedId\", file.signedId);\n\n return setValue(file.url);\n };\n\n return (\n <ImageUploader\n className=\"h-56 w-full\"\n defaultImageSize={{ width: 512, height: 288 }}\n fixedAspectRatio={{ width: 16, height: 9 }}\n src={field.value}\n uploadConfig={IMAGE_UPLOAD_CONFIG}\n onUploadComplete={handleImageUpload}\n />\n );\n};\n\nexport default FormikImageUploader;\n","import { memo } from \"react\";\n\nimport classnames from \"classnames\";\nimport Container from \"neetomolecules/v2/Container\";\nimport Header from \"neetomolecules/v2/Header\";\n\nconst PageWrapper = ({ children, className }) => (\n <Container {...{ className }}>{children}</Container>\n);\n\nconst PageHeader = ({ title, breadcrumbs }) => (\n <Header {...{ breadcrumbs, title }} size=\"small\" />\n);\n\nconst customPropEqualityCheck = (prevProps, nextProps) =>\n prevProps.title === nextProps.title &&\n prevProps.breadcrumbs === nextProps.breadcrumbs;\nconst MemoizedPageHeader = memo(PageHeader, customPropEqualityCheck);\n\nconst PageContent = ({ children, className = \"\" }) => (\n <div className=\"w-full h-full\">\n <div className={classnames([\"mx-auto max-w-7xl\", className])}>\n {children}\n </div>\n </div>\n);\nexport { PageWrapper, MemoizedPageHeader as PageHeader, PageContent };\n","// eslint-disable-next-line @bigbinary/neeto/use-webpack-alias\nimport { TagsComponent } from \"@bigbinary/neeto-tags-frontend/v2\";\nimport { removeBy } from \"neetocist\";\n\nconst Tags = ({\n allTags,\n selectedTags,\n onUpdate,\n onCreate,\n isLoading,\n title = \"\",\n}) => {\n const handleTagSelect = newTag => onUpdate([...selectedTags, newTag]);\n\n const handleTagRemove = removedTag => {\n const updatedTags = removeBy({ value: removedTag.value }, selectedTags);\n onUpdate(updatedTags);\n };\n\n const handleTagCreate = tagName => {\n onCreate(\n { name: tagName },\n {\n onSuccess: ({ tag }) =>\n handleTagSelect({ value: tag.id, label: tag.name }),\n }\n );\n };\n\n return (\n <div className=\"w-full\">\n <TagsComponent\n {...{ allTags, selectedTags, title }}\n bodyProps={{ className: \"p-0 w-full\" }}\n titleProps={{ weight: \"medium\", style: \"body2\" }}\n buttonProps={{\n loading: isLoading,\n disabled: isLoading,\n iconPosition: \"left\",\n }}\n onTagCreate={handleTagCreate}\n onTagDelete={handleTagRemove}\n onTagSelect={handleTagSelect}\n />\n </div>\n );\n};\n\nexport default Tags;\n","import { Typography } from \"@bigbinary/neeto-atoms\";\nimport { CLOUDFRONT_BASE_URL } from \"neetocommons/v2/constants\";\n\nconst Preview = ({ template, imageUrl }) => (\n <div\n className=\"neeto-template bg-background flex flex-col overflow-hidden rounded shadow-xs\"\n tabIndex={0}\n >\n <div className=\"neeto-template__header\">\n <img\n className=\"neeto-template__image\"\n data-testid=\"template-image-preview\"\n src={\n imageUrl ||\n `${CLOUDFRONT_BASE_URL}/images/neetoForm/default-form-template.svg`\n }\n />\n </div>\n <div className=\"bg-background p-3 lg:p-5 flex items-center justify-between gap-2\">\n <Typography\n className=\"text-foreground leading-normal\"\n data-testid=\"template-title-text\"\n variant=\"body2\"\n weight=\"medium\"\n >\n {template.title}\n </Typography>\n </div>\n </div>\n);\n\nexport default Preview;\n","import { renameKeys } from \"neetocist\";\nimport { pluck } from \"ramda\";\n\nexport const buildSelectOptionsBy = (\n labelField,\n options = [],\n valueField = \"id\"\n) =>\n options.map(option => ({\n value: option[valueField],\n label: option[labelField],\n }));\n\nexport const buildTagOptions = (tags = []) =>\n renameKeys({ id: \"value\", name: \"label\" }, tags);\n\nexport const buildTemplateUpdatePayload = values => ({\n image: values.imageSignedId || null,\n tagIds: pluck(\"value\", values?.tags),\n});\n","import { Spinner, Label } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, Form } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport MobilePreviewHeader from \"neetomolecules/v2/MobilePreviewHeader\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\n\nimport {\n useFetchTemplate,\n useUpdateTemplate,\n} from \"v2/hooks/reactQuery/useTemplatesApi\";\nimport {\n useCreateTemplateTag,\n useFetchTemplateTags,\n} from \"v2/hooks/reactQuery/useTemplateTagsApi\";\n// eslint-disable-next-line import/extensions\nimport \"stylesheets/application.css\";\n\nimport FormikImageUploader from \"./Common/FormikImageUploader\";\nimport {\n PageWrapper,\n PageHeader,\n PageContent,\n} from \"./Common/SinglePageLayout\";\nimport Tags from \"./Common/Tags\";\nimport Preview from \"./Preview\";\nimport {\n buildSelectOptionsBy,\n buildTagOptions,\n buildTemplateUpdatePayload,\n} from \"./utils\";\n\nconst TemplateSettings = ({\n onCancelTemplatePreview = \"\",\n breadcrumbs = [],\n className = \"\",\n resourceId = \"id\",\n}) => {\n const { [resourceId]: id } = useParams();\n const { t } = useTranslation();\n\n const { data, isLoading: isFetchingTemplate } = useFetchTemplate({\n resourceId: id,\n });\n\n const { mutate: updateTemplate, isPending: isUpdatingTemplate } =\n useUpdateTemplate({ resourceId: id });\n\n const { mutate: createTemplateTag, isPending: isCreatingTags } =\n useCreateTemplateTag();\n\n const { data: templateTags = {}, isLoading: isTagsLoading } =\n useFetchTemplateTags();\n\n const handleSubmit = values => {\n updateTemplate({ template: buildTemplateUpdatePayload(values) });\n };\n\n const isLoading = isFetchingTemplate || isTagsLoading;\n const tags = buildTagOptions(data?.tags);\n\n const resourceInitialValues = { imageUrl: null, ...data, tags };\n\n return (\n <PageWrapper className={classnames(\"p-0\", className)}>\n <PageContent className=\"h-full max-w-full mx-0\">\n {isLoading ? (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n ) : (\n <Form\n className=\"h-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues: resourceInitialValues,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setFieldValue }) => (\n <div className=\"grid md:grid-cols-2 grid-cols-1 h-full\">\n <div className=\"w-full h-full md:overflow-y-auto\">\n <div className=\"md:px-10 px-5 pb-2\">\n <PageHeader\n {...{ breadcrumbs }}\n title={t(\"neetoTemplate.templateSettings.title\")}\n />\n <div className=\"flex flex-col gap-6\">\n <div className=\"flex flex-col gap-2\">\n <Label>\n {t(\"neetoTemplate.templateSettings.imageLabel\")}\n </Label>\n <FormikImageUploader name=\"imageUrl\" />\n </div>\n <Tags\n isLoading={isCreatingTags}\n selectedTags={values.tags}\n allTags={buildSelectOptionsBy(\n \"name\",\n templateTags.tags\n )}\n title={t(\n \"neetoTemplate.templateSettings.categoryLabel\"\n )}\n onCreate={createTemplateTag}\n onUpdate={tags => setFieldValue(\"tags\", tags)}\n />\n </div>\n </div>\n <div className=\"bg-background sticky bottom-0 py-6 md:px-10 px-5\">\n <ActionBlock\n isSubmitting={isUpdatingTemplate}\n cancelButtonProps={{\n to: onCancelTemplatePreview,\n \"data-testid\": \"reset-changes-button\",\n onClick: noop,\n }}\n />\n </div>\n </div>\n <MobilePreviewHeader className=\"w-full md:hidden\" />\n <div className=\"bg-muted py-6 md:py-12 px-5 md:px-10 xl:px-16 w-full md:overflow-y-auto\">\n <Preview imageUrl={values.imageUrl} template={data} />\n </div>\n </div>\n )}\n </Form>\n )}\n </PageContent>\n </PageWrapper>\n );\n};\n\nexport default TemplateSettings;\n"],"names":["useCreateTemplateTag","options","useMutation","_objectSpread","mutationFn","templateTagsApi","create","onSuccess","refetchTags","useFetchTemplateTags","useQuery","queryKey","QUERY_KEYS","TEMPLATE_TAGS","queryFn","list","FormikImageUploader","_ref","name","_useField","useField","_useField2","_slicedToArray","field","_","setValue","_useFormikContext","useFormikContext","setFieldValue","handleImageUpload","file","signedId","url","_jsx","ImageUploader","className","defaultImageSize","width","height","fixedAspectRatio","src","value","uploadConfig","IMAGE_UPLOAD_CONFIG","onUploadComplete","PageWrapper","children","Container","PageHeader","_ref2","title","breadcrumbs","Header","size","customPropEqualityCheck","prevProps","nextProps","MemoizedPageHeader","memo","PageContent","_ref3","_ref3$className","classnames","Tags","allTags","selectedTags","onUpdate","onCreate","isLoading","_ref$title","handleTagSelect","newTag","concat","_toConsumableArray","handleTagRemove","removedTag","updatedTags","removeBy","handleTagCreate","tagName","tag","id","label","TagsComponent","bodyProps","titleProps","weight","style","buttonProps","loading","disabled","iconPosition","onTagCreate","onTagDelete","onTagSelect","Preview","template","imageUrl","_jsxs","tabIndex","CLOUDFRONT_BASE_URL","Typography","variant","buildSelectOptionsBy","labelField","arguments","length","undefined","valueField","map","option","buildTagOptions","tags","renameKeys","buildTemplateUpdatePayload","values","image","imageSignedId","tagIds","pluck","TemplateSettings","_ref$onCancelTemplate","onCancelTemplatePreview","_ref$breadcrumbs","_ref$className","_ref$resourceId","resourceId","_useParams","useParams","_useTranslation","useTranslation","t","_useFetchTemplate","useFetchTemplate","data","isFetchingTemplate","_useUpdateTemplate","useUpdateTemplate","updateTemplate","mutate","isUpdatingTemplate","isPending","_useCreateTemplateTag","createTemplateTag","isCreatingTags","_useFetchTemplateTags","_useFetchTemplateTags2","templateTags","isTagsLoading","handleSubmit","resourceInitialValues","Spinner","Form","formikProps","enableReinitialize","initialValues","onSubmit","Label","ActionBlock","isSubmitting","cancelButtonProps","to","onClick","noop","MobilePreviewHeader"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var NeetoTags = require('@bigbinary/neeto-tags-frontend/v2/NeetoTags');
6
+ var reactQuery = require('@tanstack/react-query');
7
+ var neetoCist = require('@bigbinary/neeto-cist');
8
+ var query = require('../../query-BHYqZXXl.js');
9
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
10
+ var i18next = require('i18next');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ var TAG_TYPES = [{
14
+ id: 1,
15
+ label: i18next.t("neetoTemplate.templatesTags.template"),
16
+ url: "".concat(query.NEETO_TEMPLATES_URL, "/tags/template_tags"),
17
+ columns: [{
18
+ title: i18next.t("neetoTemplate.templatesTags.numberOfActiveTemplates"),
19
+ key: "templates_count",
20
+ dataIndex: "templatesCount",
21
+ align: "center",
22
+ width: 300,
23
+ sorter: true,
24
+ render: function render(templatesCount) {
25
+ return templatesCount !== 0 ? /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Typography, {
26
+ variant: "body1",
27
+ children: [" ", templatesCount, " "]
28
+ }) : "-";
29
+ }
30
+ }]
31
+ }];
32
+
33
+ var _excluded = ["breadcrumbs", "tagsPath"];
34
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
35
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
36
+ var TemplateTags = function TemplateTags(_ref) {
37
+ var breadcrumbs = _ref.breadcrumbs,
38
+ tagsPath = _ref.tagsPath,
39
+ otherProps = _objectWithoutProperties(_ref, _excluded);
40
+ var queryClient = reactQuery.useQueryClient();
41
+ var invalidateTags = function invalidateTags() {
42
+ queryClient.invalidateQueries({
43
+ queryKey: [query.QUERY_KEYS.TEMPLATE_TAGS]
44
+ });
45
+ };
46
+ var invalidateTagsAndTemplates = function invalidateTagsAndTemplates() {
47
+ invalidateTags();
48
+ queryClient.invalidateQueries({
49
+ queryKey: [query.QUERY_KEYS.TEMPLATES_LIST]
50
+ });
51
+ queryClient.invalidateQueries({
52
+ queryKey: [query.QUERY_KEYS.TEMPLATE]
53
+ });
54
+ };
55
+ var config = _objectSpread({
56
+ tagTypes: TAG_TYPES,
57
+ tagsMergable: true,
58
+ breadcrumbs: breadcrumbs,
59
+ displayMenu: false,
60
+ tagsPath: tagsPath,
61
+ onTagRowClick: neetoCist.noop,
62
+ createTags: {
63
+ onSuccess: {
64
+ callback: invalidateTags
65
+ }
66
+ },
67
+ updateTags: {
68
+ onSuccess: {
69
+ callback: invalidateTagsAndTemplates
70
+ }
71
+ },
72
+ deleteTags: {
73
+ onSuccess: {
74
+ callback: invalidateTagsAndTemplates
75
+ }
76
+ },
77
+ mergeTags: {
78
+ onSuccess: {
79
+ callback: invalidateTagsAndTemplates
80
+ }
81
+ }
82
+ }, otherProps);
83
+ return /*#__PURE__*/jsxRuntime.jsx(NeetoTags, {
84
+ config: config
85
+ });
86
+ };
87
+
88
+ module.exports = TemplateTags;
89
+ //# sourceMappingURL=TemplateTags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateTags.js","sources":["../../../app/javascript/src/v2/components/TemplateTags/constants.jsx","../../../app/javascript/src/v2/components/TemplateTags/index.jsx"],"sourcesContent":["import { Typography } from \"@bigbinary/neeto-atoms\";\nimport { t } from \"i18next\";\n\nimport { NEETO_TEMPLATES_URL } from \"src/constants\";\n\nexport const TAG_TYPES = [\n {\n id: 1,\n label: t(\"neetoTemplate.templatesTags.template\"),\n url: `${NEETO_TEMPLATES_URL}/tags/template_tags`,\n columns: [\n {\n title: t(\"neetoTemplate.templatesTags.numberOfActiveTemplates\"),\n key: \"templates_count\",\n dataIndex: \"templatesCount\",\n align: \"center\",\n width: 300,\n sorter: true,\n render: templatesCount =>\n templatesCount !== 0 ? (\n <Typography variant=\"body1\"> {templatesCount} </Typography>\n ) : (\n \"-\"\n ),\n },\n ],\n },\n];\n","// eslint-disable-next-line @bigbinary/neeto/use-webpack-alias\nimport { NeetoTags } from \"@bigbinary/neeto-tags-frontend/v2\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { noop } from \"neetocist\";\n\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nimport { TAG_TYPES } from \"./constants\";\n\nconst TemplateTags = ({ breadcrumbs, tagsPath, ...otherProps }) => {\n const queryClient = useQueryClient();\n\n const invalidateTags = () => {\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.TEMPLATE_TAGS],\n });\n };\n\n const invalidateTagsAndTemplates = () => {\n invalidateTags();\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.TEMPLATES_LIST],\n });\n\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.TEMPLATE],\n });\n };\n\n const config = {\n tagTypes: TAG_TYPES,\n tagsMergable: true,\n breadcrumbs,\n displayMenu: false,\n tagsPath,\n onTagRowClick: noop,\n createTags: { onSuccess: { callback: invalidateTags } },\n updateTags: { onSuccess: { callback: invalidateTagsAndTemplates } },\n deleteTags: { onSuccess: { callback: invalidateTagsAndTemplates } },\n mergeTags: { onSuccess: { callback: invalidateTagsAndTemplates } },\n ...otherProps,\n };\n\n return <NeetoTags {...{ config }} />;\n};\n\nexport default TemplateTags;\n"],"names":["TAG_TYPES","id","label","t","url","concat","NEETO_TEMPLATES_URL","columns","title","key","dataIndex","align","width","sorter","render","templatesCount","_jsxs","Typography","variant","children","TemplateTags","_ref","breadcrumbs","tagsPath","otherProps","_objectWithoutProperties","_excluded","queryClient","useQueryClient","invalidateTags","invalidateQueries","queryKey","QUERY_KEYS","TEMPLATE_TAGS","invalidateTagsAndTemplates","TEMPLATES_LIST","TEMPLATE","config","_objectSpread","tagTypes","tagsMergable","displayMenu","onTagRowClick","noop","createTags","onSuccess","callback","updateTags","deleteTags","mergeTags","_jsx","NeetoTags"],"mappings":";;;;;;;;;;;;AAKO,IAAMA,SAAS,GAAG,CACvB;AACEC,EAAAA,EAAE,EAAE,CAAC;AACLC,EAAAA,KAAK,EAAEC,SAAC,CAAC,sCAAsC,CAAC;AAChDC,EAAAA,GAAG,EAAA,EAAA,CAAAC,MAAA,CAAKC,yBAAmB,EAAA,qBAAA,CAAqB;AAChDC,EAAAA,OAAO,EAAE,CACP;AACEC,IAAAA,KAAK,EAAEL,SAAC,CAAC,qDAAqD,CAAC;AAC/DM,IAAAA,GAAG,EAAE,iBAAiB;AACtBC,IAAAA,SAAS,EAAE,gBAAgB;AAC3BC,IAAAA,KAAK,EAAE,QAAQ;AACfC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,MAAM,EAAE,IAAI;AACZC,IAAAA,MAAM,EAAE,SAARA,MAAMA,CAAEC,cAAc,EAAA;AAAA,MAAA,OACpBA,cAAc,KAAK,CAAC,gBAClBC,eAAA,CAACC,qBAAU,EAAA;AAACC,QAAAA,OAAO,EAAC,OAAO;AAAAC,QAAAA,QAAA,EAAA,CAAC,GAAC,EAACJ,cAAc,EAAC,GAAC;OAAY,CAAC,GAE3D,GACD;AAAA,IAAA;GACJ;AAEL,CAAC,CACF;;;;;AClBD,IAAMK,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAiD;AAAA,EAAA,IAA3CC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;AAAKC,IAAAA,UAAU,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA,CAAA;AAC1D,EAAA,IAAMC,WAAW,GAAGC,yBAAc,EAAE;AAEpC,EAAA,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,GAAS;IAC3BF,WAAW,CAACG,iBAAiB,CAAC;AAC5BC,MAAAA,QAAQ,EAAE,CAACC,gBAAU,CAACC,aAAa;AACrC,KAAC,CAAC;EACJ,CAAC;AAED,EAAA,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA0BA,GAAS;AACvCL,IAAAA,cAAc,EAAE;IAChBF,WAAW,CAACG,iBAAiB,CAAC;AAC5BC,MAAAA,QAAQ,EAAE,CAACC,gBAAU,CAACG,cAAc;AACtC,KAAC,CAAC;IAEFR,WAAW,CAACG,iBAAiB,CAAC;AAC5BC,MAAAA,QAAQ,EAAE,CAACC,gBAAU,CAACI,QAAQ;AAChC,KAAC,CAAC;EACJ,CAAC;EAED,IAAMC,MAAM,GAAAC,aAAA,CAAA;AACVC,IAAAA,QAAQ,EAAEvC,SAAS;AACnBwC,IAAAA,YAAY,EAAE,IAAI;AAClBlB,IAAAA,WAAW,EAAXA,WAAW;AACXmB,IAAAA,WAAW,EAAE,KAAK;AAClBlB,IAAAA,QAAQ,EAARA,QAAQ;AACRmB,IAAAA,aAAa,EAAEC,cAAI;AACnBC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAEjB;AAAe;KAAG;AACvDkB,IAAAA,UAAU,EAAE;AAAEF,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAEZ;AAA2B;KAAG;AACnEc,IAAAA,UAAU,EAAE;AAAEH,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAEZ;AAA2B;KAAG;AACnEe,IAAAA,SAAS,EAAE;AAAEJ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAEZ;AAA2B;AAAE;AAAC,GAAA,EAC/DV,UAAU,CACd;EAED,oBAAO0B,cAAA,CAACC,SAAS,EAAA;AAAOd,IAAAA,MAAM,EAANA;AAAM,GAAK,CAAC;AACtC;;;;"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ require('../../templates-D92QbbVX.js');
4
+ var v2_CreateTemplateModal = require('./CreateTemplateModal.js');
5
+ var v2_TemplateSettings = require('./TemplateSettings.js');
6
+ var v2_TemplateTags = require('./TemplateTags.js');
7
+ require('axios');
8
+ require('../../query-BHYqZXXl.js');
9
+ require('@babel/runtime/helpers/slicedToArray');
10
+ require('react');
11
+ require('@bigbinary/neeto-atoms');
12
+ require('@bigbinary/neeto-cist');
13
+ require('@babel/runtime/helpers/defineProperty');
14
+ require('@babel/runtime/helpers/toConsumableArray');
15
+ require('@bigbinary/neeto-commons-frontend/v2/initializers');
16
+ require('@bigbinary/neeto-icons/typeface-logos/Neeto');
17
+ require('@bigbinary/neeto-icons/typeface-logos');
18
+ require('@bigbinary/neeto-molecules/v2/HelpPopover');
19
+ require('@bigbinary/neeto-molecules/v2/Search');
20
+ require('react-i18next');
21
+ require('../../custom-B69ooaxC.js');
22
+ require('../../useTemplatesApi-CFO1OLfz.js');
23
+ require('@bigbinary/neeto-tags-frontend/v2/utils');
24
+ require('@tanstack/react-query');
25
+ require('@bigbinary/neeto-commons-frontend/react-utils');
26
+ require('ramda');
27
+ require('react/jsx-runtime');
28
+ require('@bigbinary/neeto-commons-frontend/v2/constants');
29
+ require('classnames');
30
+ require('@bigbinary/neeto-commons-frontend/v2/utils');
31
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils');
32
+ require('@bigbinary/neeto-molecules/v2/ResponsiveDevicePicker');
33
+ require('@bigbinary/neeto-atoms/formik');
34
+ require('@bigbinary/neeto-molecules/v2/MobilePreviewHeader');
35
+ require('react-router-dom');
36
+ require('../../template_tags-DRZa7U5R.js');
37
+ require('@bigbinary/neeto-image-uploader-frontend/v2/ImageUploader');
38
+ require('formik');
39
+ require('@bigbinary/neeto-molecules/v2/Container');
40
+ require('@bigbinary/neeto-molecules/v2/Header');
41
+ require('@bigbinary/neeto-tags-frontend/v2/TagsComponent');
42
+ require('@babel/runtime/helpers/objectWithoutProperties');
43
+ require('@bigbinary/neeto-tags-frontend/v2/NeetoTags');
44
+ require('i18next');
45
+
46
+
47
+
48
+ exports.CreateTemplateModal = v2_CreateTemplateModal;
49
+ exports.TemplateSettings = v2_TemplateSettings;
50
+ exports.TemplateTags = v2_TemplateTags;
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}