dn-react-router-toolkit 0.7.6 → 0.7.8

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 (95) hide show
  1. package/dist/api/create_api_handler.d.mts +5 -5
  2. package/dist/api/create_api_handler.d.ts +5 -5
  3. package/dist/api/index.d.mts +7 -0
  4. package/dist/api/index.d.ts +7 -0
  5. package/dist/api/index.js +163 -2
  6. package/dist/api/index.mjs +169 -1
  7. package/dist/client/env_loader.d.mts +2 -2
  8. package/dist/client/env_loader.d.ts +2 -2
  9. package/dist/client/env_loader.js +2 -12
  10. package/dist/client/env_loader.mjs +2 -2
  11. package/dist/client/file_input.d.mts +3 -2
  12. package/dist/client/file_input.d.ts +3 -2
  13. package/dist/client/file_input.js +30 -37
  14. package/dist/client/file_input.mjs +33 -28
  15. package/dist/client/index.d.mts +1 -0
  16. package/dist/client/index.d.ts +1 -0
  17. package/dist/client/index.js +38 -44
  18. package/dist/client/index.mjs +39 -33
  19. package/dist/client/store_text_editor.d.mts +2 -2
  20. package/dist/client/store_text_editor.d.ts +2 -2
  21. package/dist/client/store_text_editor.js +3 -12
  22. package/dist/client/store_text_editor.mjs +3 -2
  23. package/dist/crud/crud_form.d.mts +5 -4
  24. package/dist/crud/crud_form.d.ts +5 -4
  25. package/dist/crud/crud_form.js +74 -72
  26. package/dist/crud/crud_form.mjs +79 -62
  27. package/dist/crud/crud_form_provider.d.mts +9 -7
  28. package/dist/crud/crud_form_provider.d.ts +9 -7
  29. package/dist/crud/crud_form_provider.js +2 -12
  30. package/dist/crud/crud_form_provider.mjs +6 -3
  31. package/dist/crud/crud_page.d.mts +10 -6
  32. package/dist/crud/crud_page.d.ts +10 -6
  33. package/dist/crud/crud_page.js +272 -409
  34. package/dist/crud/crud_page.mjs +277 -399
  35. package/dist/crud/generate_pages.d.mts +10 -2
  36. package/dist/crud/generate_pages.d.ts +10 -2
  37. package/dist/crud/generate_pages.js +17 -14
  38. package/dist/crud/generate_pages.mjs +17 -4
  39. package/dist/crud/index.d.mts +2 -1
  40. package/dist/crud/index.d.ts +2 -1
  41. package/dist/crud/index.js +290 -404
  42. package/dist/crud/index.mjs +295 -404
  43. package/dist/form/create_form_component.d.mts +3 -2
  44. package/dist/form/create_form_component.d.ts +3 -2
  45. package/dist/form/create_form_component.js +3 -12
  46. package/dist/form/create_form_component.mjs +3 -2
  47. package/dist/form/form_components.d.mts +5 -4
  48. package/dist/form/form_components.d.ts +5 -4
  49. package/dist/form/form_components.js +3 -12
  50. package/dist/form/form_components.mjs +3 -2
  51. package/dist/form/index.d.mts +1 -0
  52. package/dist/form/index.d.ts +1 -0
  53. package/dist/form/index.js +3 -12
  54. package/dist/form/index.mjs +3 -2
  55. package/dist/post/editor_toolbar.d.mts +4 -3
  56. package/dist/post/editor_toolbar.d.ts +4 -3
  57. package/dist/post/editor_toolbar.js +116 -273
  58. package/dist/post/editor_toolbar.mjs +123 -263
  59. package/dist/post/index.d.mts +1 -0
  60. package/dist/post/index.d.ts +1 -0
  61. package/dist/post/index.js +329 -411
  62. package/dist/post/index.mjs +337 -409
  63. package/dist/post/post_form_page.d.mts +5 -4
  64. package/dist/post/post_form_page.d.ts +5 -4
  65. package/dist/post/post_form_page.js +331 -413
  66. package/dist/post/post_form_page.mjs +337 -409
  67. package/dist/post/thumbnail_picker.d.mts +3 -2
  68. package/dist/post/thumbnail_picker.d.ts +3 -2
  69. package/dist/post/thumbnail_picker.js +14 -23
  70. package/dist/post/thumbnail_picker.mjs +14 -13
  71. package/dist/seo/index.d.mts +1 -1
  72. package/dist/seo/index.d.ts +1 -1
  73. package/dist/seo/index.js +2 -2
  74. package/dist/seo/index.mjs +2 -2
  75. package/dist/seo/seo.d.mts +2 -2
  76. package/dist/seo/seo.d.ts +2 -2
  77. package/dist/seo/seo.js +2 -2
  78. package/dist/seo/seo.mjs +2 -2
  79. package/dist/table/buttons.d.mts +2 -2
  80. package/dist/table/buttons.d.ts +2 -2
  81. package/dist/table/buttons.js +42 -57
  82. package/dist/table/buttons.mjs +42 -47
  83. package/dist/table/index.d.mts +1 -0
  84. package/dist/table/index.d.ts +1 -0
  85. package/dist/table/index.js +185 -338
  86. package/dist/table/index.mjs +185 -328
  87. package/dist/table/page.d.mts +5 -4
  88. package/dist/table/page.d.ts +5 -4
  89. package/dist/table/page.js +185 -338
  90. package/dist/table/page.mjs +185 -328
  91. package/dist/table/table.d.mts +5 -4
  92. package/dist/table/table.d.ts +5 -4
  93. package/dist/table/table.js +77 -237
  94. package/dist/table/table.mjs +77 -227
  95. package/package.json +7 -5
@@ -7587,7 +7587,8 @@ var require_routes = __commonJS({
7587
7587
  // src/post/thumbnail_picker.tsx
7588
7588
  import { useSelector } from "react-store-input";
7589
7589
  import { cn } from "dn-react-toolkit/utils";
7590
- import React, { useEffect, useState } from "react";
7590
+ import { useEffect, useState } from "react";
7591
+ import { jsx } from "react/jsx-runtime";
7591
7592
  function PostThumbnailPicker({
7592
7593
  store,
7593
7594
  textEditorRef
@@ -7625,10 +7626,9 @@ function PostThumbnailPicker({
7625
7626
  unsubscribe();
7626
7627
  };
7627
7628
  }, []);
7628
- return /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-6 gap-1" }, thumbnails.map((url, index2) => /* @__PURE__ */ React.createElement(
7629
+ return /* @__PURE__ */ jsx("div", { className: "grid grid-cols-6 gap-1", children: thumbnails.map((url, index2) => /* @__PURE__ */ jsx(
7629
7630
  "button",
7630
7631
  {
7631
- key: index2,
7632
7632
  type: "button",
7633
7633
  className: cn(
7634
7634
  "border border-neutral-200 rounded-lg overflow-hidden aspect-4/3",
@@ -7638,184 +7638,38 @@ function PostThumbnailPicker({
7638
7638
  store.dispatch((state) => {
7639
7639
  state.thumbnail = url;
7640
7640
  });
7641
- }
7641
+ },
7642
+ children: /* @__PURE__ */ jsx(
7643
+ "img",
7644
+ {
7645
+ src: url,
7646
+ alt: `Thumbnail ${index2 + 1}`,
7647
+ className: "w-full h-full object-cover"
7648
+ }
7649
+ )
7642
7650
  },
7643
- /* @__PURE__ */ React.createElement(
7644
- "img",
7645
- {
7646
- src: url,
7647
- alt: `Thumbnail ${index2 + 1}`,
7648
- className: "w-full h-full object-cover"
7649
- }
7650
- )
7651
- )));
7651
+ index2
7652
+ )) });
7652
7653
  }
7653
7654
 
7654
7655
  // src/post/editor_toolbar.tsx
7655
7656
  import { cn as cn2 } from "dn-react-toolkit/utils";
7656
-
7657
- // node_modules/react-icons/lib/iconBase.mjs
7658
- import React3 from "react";
7659
-
7660
- // node_modules/react-icons/lib/iconContext.mjs
7661
- import React2 from "react";
7662
- var DefaultContext = {
7663
- color: void 0,
7664
- size: void 0,
7665
- className: void 0,
7666
- style: void 0,
7667
- attr: void 0
7668
- };
7669
- var IconContext = React2.createContext && /* @__PURE__ */ React2.createContext(DefaultContext);
7670
-
7671
- // node_modules/react-icons/lib/iconBase.mjs
7672
- var _excluded = ["attr", "size", "title"];
7673
- function _objectWithoutProperties(source, excluded) {
7674
- if (source == null) return {};
7675
- var target = _objectWithoutPropertiesLoose(source, excluded);
7676
- var key, i;
7677
- if (Object.getOwnPropertySymbols) {
7678
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
7679
- for (i = 0; i < sourceSymbolKeys.length; i++) {
7680
- key = sourceSymbolKeys[i];
7681
- if (excluded.indexOf(key) >= 0) continue;
7682
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
7683
- target[key] = source[key];
7684
- }
7685
- }
7686
- return target;
7687
- }
7688
- function _objectWithoutPropertiesLoose(source, excluded) {
7689
- if (source == null) return {};
7690
- var target = {};
7691
- for (var key in source) {
7692
- if (Object.prototype.hasOwnProperty.call(source, key)) {
7693
- if (excluded.indexOf(key) >= 0) continue;
7694
- target[key] = source[key];
7695
- }
7696
- }
7697
- return target;
7698
- }
7699
- function _extends() {
7700
- _extends = Object.assign ? Object.assign.bind() : function(target) {
7701
- for (var i = 1; i < arguments.length; i++) {
7702
- var source = arguments[i];
7703
- for (var key in source) {
7704
- if (Object.prototype.hasOwnProperty.call(source, key)) {
7705
- target[key] = source[key];
7706
- }
7707
- }
7708
- }
7709
- return target;
7710
- };
7711
- return _extends.apply(this, arguments);
7712
- }
7713
- function ownKeys(e, r) {
7714
- var t = Object.keys(e);
7715
- if (Object.getOwnPropertySymbols) {
7716
- var o = Object.getOwnPropertySymbols(e);
7717
- r && (o = o.filter(function(r2) {
7718
- return Object.getOwnPropertyDescriptor(e, r2).enumerable;
7719
- })), t.push.apply(t, o);
7720
- }
7721
- return t;
7722
- }
7723
- function _objectSpread(e) {
7724
- for (var r = 1; r < arguments.length; r++) {
7725
- var t = null != arguments[r] ? arguments[r] : {};
7726
- r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
7727
- _defineProperty(e, r2, t[r2]);
7728
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
7729
- Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
7730
- });
7731
- }
7732
- return e;
7733
- }
7734
- function _defineProperty(obj, key, value) {
7735
- key = _toPropertyKey(key);
7736
- if (key in obj) {
7737
- Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
7738
- } else {
7739
- obj[key] = value;
7740
- }
7741
- return obj;
7742
- }
7743
- function _toPropertyKey(t) {
7744
- var i = _toPrimitive(t, "string");
7745
- return "symbol" == typeof i ? i : i + "";
7746
- }
7747
- function _toPrimitive(t, r) {
7748
- if ("object" != typeof t || !t) return t;
7749
- var e = t[Symbol.toPrimitive];
7750
- if (void 0 !== e) {
7751
- var i = e.call(t, r || "default");
7752
- if ("object" != typeof i) return i;
7753
- throw new TypeError("@@toPrimitive must return a primitive value.");
7754
- }
7755
- return ("string" === r ? String : Number)(t);
7756
- }
7757
- function Tree2Element(tree) {
7758
- return tree && tree.map((node, i) => /* @__PURE__ */ React3.createElement(node.tag, _objectSpread({
7759
- key: i
7760
- }, node.attr), Tree2Element(node.child)));
7761
- }
7762
- function GenIcon(data) {
7763
- return (props) => /* @__PURE__ */ React3.createElement(IconBase, _extends({
7764
- attr: _objectSpread({}, data.attr)
7765
- }, props), Tree2Element(data.child));
7766
- }
7767
- function IconBase(props) {
7768
- var elem = (conf) => {
7769
- var {
7770
- attr,
7771
- size,
7772
- title
7773
- } = props, svgProps = _objectWithoutProperties(props, _excluded);
7774
- var computedSize = size || conf.size || "1em";
7775
- var className;
7776
- if (conf.className) className = conf.className;
7777
- if (props.className) className = (className ? className + " " : "") + props.className;
7778
- return /* @__PURE__ */ React3.createElement("svg", _extends({
7779
- stroke: "currentColor",
7780
- fill: "currentColor",
7781
- strokeWidth: "0"
7782
- }, conf.attr, attr, svgProps, {
7783
- className,
7784
- style: _objectSpread(_objectSpread({
7785
- color: props.color || conf.color
7786
- }, conf.style), props.style),
7787
- height: computedSize,
7788
- width: computedSize,
7789
- xmlns: "http://www.w3.org/2000/svg"
7790
- }), title && /* @__PURE__ */ React3.createElement("title", null, title), props.children);
7791
- };
7792
- return IconContext !== void 0 ? /* @__PURE__ */ React3.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext);
7793
- }
7794
-
7795
- // node_modules/react-icons/go/index.mjs
7796
- function GoFileMedia(props) {
7797
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M21.75 21.5H2.25A1.75 1.75 0 0 1 .5 19.75V4.25c0-.966.784-1.75 1.75-1.75h19.5c.966 0 1.75.784 1.75 1.75v15.5a1.75 1.75 0 0 1-1.75 1.75ZM2.25 4a.25.25 0 0 0-.25.25v15.5c0 .138.112.25.25.25h3.178L14 10.977a1.749 1.749 0 0 1 2.506-.032L22 16.44V4.25a.25.25 0 0 0-.25-.25ZM22 19.75v-1.19l-6.555-6.554a.248.248 0 0 0-.18-.073.247.247 0 0 0-.178.077L7.497 20H21.75a.25.25 0 0 0 .25-.25ZM10.5 9.25a3.25 3.25 0 1 1-6.5 0 3.25 3.25 0 0 1 6.5 0Zm-1.5 0a1.75 1.75 0 1 0-3.501.001A1.75 1.75 0 0 0 9 9.25Z" }, "child": [] }] })(props);
7798
- }
7799
- function GoLink(props) {
7800
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M14.78 3.653a3.936 3.936 0 1 1 5.567 5.567l-3.627 3.627a3.936 3.936 0 0 1-5.88-.353.75.75 0 0 0-1.18.928 5.436 5.436 0 0 0 8.12.486l3.628-3.628a5.436 5.436 0 1 0-7.688-7.688l-3 3a.75.75 0 0 0 1.06 1.061l3-3Z" }, "child": [] }, { "tag": "path", "attr": { "d": "M7.28 11.153a3.936 3.936 0 0 1 5.88.353.75.75 0 0 0 1.18-.928 5.436 5.436 0 0 0-8.12-.486L2.592 13.72a5.436 5.436 0 1 0 7.688 7.688l3-3a.75.75 0 1 0-1.06-1.06l-3 3a3.936 3.936 0 0 1-5.567-5.568l3.627-3.627Z" }, "child": [] }] })(props);
7801
- }
7802
- function GoListOrdered(props) {
7803
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M3.604 3.089A.75.75 0 0 1 4 3.75V8.5h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 1 1 0-1.5h.75V5.151l-.334.223a.75.75 0 0 1-.832-1.248l1.5-1a.75.75 0 0 1 .77-.037ZM8.75 5.5a.75.75 0 0 0 0 1.5h11.5a.75.75 0 0 0 0-1.5H8.75Zm0 6a.75.75 0 0 0 0 1.5h11.5a.75.75 0 0 0 0-1.5H8.75Zm0 6a.75.75 0 0 0 0 1.5h11.5a.75.75 0 0 0 0-1.5H8.75ZM5.5 15.75c0-.704-.271-1.286-.72-1.686a2.302 2.302 0 0 0-1.53-.564c-.535 0-1.094.178-1.53.565-.449.399-.72.982-.72 1.685a.75.75 0 0 0 1.5 0c0-.296.104-.464.217-.564A.805.805 0 0 1 3.25 15c.215 0 .406.072.533.185.113.101.217.268.217.565 0 .332-.069.48-.21.657-.092.113-.216.24-.403.419l-.147.14c-.152.144-.33.313-.52.504l-1.5 1.5a.75.75 0 0 0-.22.53v.25c0 .414.336.75.75.75H5A.75.75 0 0 0 5 19H3.31l.47-.47c.176-.176.333-.324.48-.465l.165-.156a5.98 5.98 0 0 0 .536-.566c.358-.447.539-.925.539-1.593Z" }, "child": [] }] })(props);
7804
- }
7805
- function GoListUnordered(props) {
7806
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M8.75 5.5h11.5a.75.75 0 0 1 0 1.5H8.75a.75.75 0 0 1 0-1.5Zm0 6h11.5a.75.75 0 0 1 0 1.5H8.75a.75.75 0 0 1 0-1.5Zm0 6h11.5a.75.75 0 0 1 0 1.5H8.75a.75.75 0 0 1 0-1.5ZM5 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm0 12a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z" }, "child": [] }] })(props);
7807
- }
7808
-
7809
- // src/post/editor_toolbar.tsx
7810
- import React7 from "react";
7657
+ import {
7658
+ GoFileMedia,
7659
+ GoLink,
7660
+ GoListOrdered,
7661
+ GoListUnordered
7662
+ } from "react-icons/go";
7811
7663
 
7812
7664
  // src/client/env_loader.tsx
7813
- import React4 from "react";
7814
7665
  import { useRouteLoaderData } from "react-router";
7666
+ import { jsx as jsx2 } from "react/jsx-runtime";
7815
7667
 
7816
7668
  // src/client/file_input.tsx
7817
- import "react";
7818
- import React5 from "react";
7669
+ import {
7670
+ useRef
7671
+ } from "react";
7672
+ import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
7819
7673
  function FileInput({
7820
7674
  buttonRef,
7821
7675
  className,
@@ -7825,35 +7679,38 @@ function FileInput({
7825
7679
  onChange,
7826
7680
  ...props
7827
7681
  }) {
7828
- const inputRef = React5.useRef(null);
7829
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(
7830
- "button",
7831
- {
7832
- ref: buttonRef,
7833
- className,
7834
- type: "button",
7835
- onClick: () => {
7836
- inputRef.current?.click();
7682
+ const inputRef = useRef(null);
7683
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
7684
+ /* @__PURE__ */ jsx3(
7685
+ "button",
7686
+ {
7687
+ ref: buttonRef,
7688
+ className,
7689
+ type: "button",
7690
+ onClick: () => {
7691
+ inputRef.current?.click();
7692
+ },
7693
+ children
7837
7694
  }
7838
- },
7839
- children
7840
- ), /* @__PURE__ */ React5.createElement(
7841
- "input",
7842
- {
7843
- ...props,
7844
- type: "file",
7845
- ref: inputRef,
7846
- style: {
7847
- display: "none"
7848
- },
7849
- onChange: async (e) => {
7850
- await onChange?.(e);
7851
- if (inputRef.current) {
7852
- inputRef.current.value = "";
7695
+ ),
7696
+ /* @__PURE__ */ jsx3(
7697
+ "input",
7698
+ {
7699
+ ...props,
7700
+ type: "file",
7701
+ ref: inputRef,
7702
+ style: {
7703
+ display: "none"
7704
+ },
7705
+ onChange: async (e) => {
7706
+ await onChange?.(e);
7707
+ if (inputRef.current) {
7708
+ inputRef.current.value = "";
7709
+ }
7853
7710
  }
7854
7711
  }
7855
- }
7856
- ));
7712
+ )
7713
+ ] });
7857
7714
  }
7858
7715
 
7859
7716
  // src/client/use_user_agent.tsx
@@ -7864,7 +7721,8 @@ import {
7864
7721
  TextEditor
7865
7722
  } from "dn-react-text-editor";
7866
7723
  import { useStoreController } from "react-store-input";
7867
- import React6, { useImperativeHandle, useRef } from "react";
7724
+ import { useImperativeHandle, useRef as useRef2 } from "react";
7725
+ import { jsx as jsx4 } from "react/jsx-runtime";
7868
7726
  function StoreTextEditor({
7869
7727
  store,
7870
7728
  name,
@@ -7874,7 +7732,7 @@ function StoreTextEditor({
7874
7732
  ref,
7875
7733
  ...props
7876
7734
  }) {
7877
- const controllerRef = useRef(null);
7735
+ const controllerRef = useRef2(null);
7878
7736
  useImperativeHandle(
7879
7737
  ref,
7880
7738
  () => controllerRef.current,
@@ -7923,7 +7781,7 @@ function StoreTextEditor({
7923
7781
  }
7924
7782
  return void 0;
7925
7783
  };
7926
- return /* @__PURE__ */ React6.createElement(
7784
+ return /* @__PURE__ */ jsx4(
7927
7785
  TextEditor,
7928
7786
  {
7929
7787
  ...props,
@@ -7941,92 +7799,95 @@ function StoreTextEditor({
7941
7799
  import { generateMetadata } from "dn-react-toolkit/file/client";
7942
7800
 
7943
7801
  // src/post/editor_toolbar.tsx
7802
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
7944
7803
  function EditorToolbar({
7945
7804
  textEditorRef,
7946
7805
  className
7947
7806
  }) {
7948
- return /* @__PURE__ */ React7.createElement(
7807
+ return /* @__PURE__ */ jsxs2(
7949
7808
  "div",
7950
7809
  {
7951
- className: cn2("w-full h-12 flex items-center gap-0.5 px-1", className)
7952
- },
7953
- /* @__PURE__ */ React7.createElement(
7954
- FileInput,
7955
- {
7956
- className: "button-icon-base text-[18px]",
7957
- onChange: async (e) => {
7958
- const files = e.target.files;
7959
- if (!files || files.length === 0) {
7960
- return;
7810
+ className: cn2("w-full h-12 flex items-center gap-0.5 px-1", className),
7811
+ children: [
7812
+ /* @__PURE__ */ jsx5(
7813
+ FileInput,
7814
+ {
7815
+ className: "button-icon-base text-[18px]",
7816
+ onChange: async (e) => {
7817
+ const files = e.target.files;
7818
+ if (!files || files.length === 0) {
7819
+ return;
7820
+ }
7821
+ textEditorRef.current?.commands.attachFile(Array.from(files));
7822
+ },
7823
+ children: /* @__PURE__ */ jsx5(GoFileMedia, {})
7961
7824
  }
7962
- textEditorRef.current?.commands.attachFile(Array.from(files));
7963
- }
7964
- },
7965
- /* @__PURE__ */ React7.createElement(GoFileMedia, null)
7966
- ),
7967
- /* @__PURE__ */ React7.createElement(
7968
- "button",
7969
- {
7970
- type: "button",
7971
- onClick: () => {
7972
- const href = prompt("\uB9C1\uD06C URL\uC744 \uC785\uB825\uD558\uC138\uC694");
7973
- if (!href) {
7974
- return;
7825
+ ),
7826
+ /* @__PURE__ */ jsx5(
7827
+ "button",
7828
+ {
7829
+ type: "button",
7830
+ onClick: () => {
7831
+ const href = prompt("\uB9C1\uD06C URL\uC744 \uC785\uB825\uD558\uC138\uC694");
7832
+ if (!href) {
7833
+ return;
7834
+ }
7835
+ textEditorRef.current?.commands.toggleMark("link", { href });
7836
+ },
7837
+ className: "button-icon-base text-[20px]",
7838
+ children: /* @__PURE__ */ jsx5(GoLink, {})
7975
7839
  }
7976
- textEditorRef.current?.commands.toggleMark("link", { href });
7977
- },
7978
- className: "button-icon-base text-[20px]"
7979
- },
7980
- /* @__PURE__ */ React7.createElement(GoLink, null)
7981
- ),
7982
- /* @__PURE__ */ React7.createElement(
7983
- "button",
7984
- {
7985
- type: "button",
7986
- onClick: () => {
7987
- textEditorRef.current?.commands.toggleBlockType("heading", {
7988
- level: 2
7989
- });
7990
- },
7991
- className: "button-icon-base text-[18px]"
7992
- },
7993
- /* @__PURE__ */ React7.createElement("span", null, "H2")
7994
- ),
7995
- /* @__PURE__ */ React7.createElement(
7996
- "button",
7997
- {
7998
- type: "button",
7999
- onClick: () => {
8000
- textEditorRef.current?.commands.toggleBlockType("heading", {
8001
- level: 3
8002
- });
8003
- },
8004
- className: "button-icon-base text-[18px]"
8005
- },
8006
- /* @__PURE__ */ React7.createElement("span", null, "H3")
8007
- ),
8008
- /* @__PURE__ */ React7.createElement(
8009
- "button",
8010
- {
8011
- type: "button",
8012
- onClick: () => {
8013
- textEditorRef.current?.commands.wrapInList("ordered_list");
8014
- },
8015
- className: "button-icon-base text-[20px]"
8016
- },
8017
- /* @__PURE__ */ React7.createElement(GoListOrdered, null)
8018
- ),
8019
- /* @__PURE__ */ React7.createElement(
8020
- "button",
8021
- {
8022
- type: "button",
8023
- onClick: () => {
8024
- textEditorRef.current?.commands.wrapInList("bullet_list");
8025
- },
8026
- className: "button-icon-base text-[20px]"
8027
- },
8028
- /* @__PURE__ */ React7.createElement(GoListUnordered, null)
8029
- )
7840
+ ),
7841
+ /* @__PURE__ */ jsx5(
7842
+ "button",
7843
+ {
7844
+ type: "button",
7845
+ onClick: () => {
7846
+ textEditorRef.current?.commands.toggleBlockType("heading", {
7847
+ level: 2
7848
+ });
7849
+ },
7850
+ className: "button-icon-base text-[18px]",
7851
+ children: /* @__PURE__ */ jsx5("span", { children: "H2" })
7852
+ }
7853
+ ),
7854
+ /* @__PURE__ */ jsx5(
7855
+ "button",
7856
+ {
7857
+ type: "button",
7858
+ onClick: () => {
7859
+ textEditorRef.current?.commands.toggleBlockType("heading", {
7860
+ level: 3
7861
+ });
7862
+ },
7863
+ className: "button-icon-base text-[18px]",
7864
+ children: /* @__PURE__ */ jsx5("span", { children: "H3" })
7865
+ }
7866
+ ),
7867
+ /* @__PURE__ */ jsx5(
7868
+ "button",
7869
+ {
7870
+ type: "button",
7871
+ onClick: () => {
7872
+ textEditorRef.current?.commands.wrapInList("ordered_list");
7873
+ },
7874
+ className: "button-icon-base text-[20px]",
7875
+ children: /* @__PURE__ */ jsx5(GoListOrdered, {})
7876
+ }
7877
+ ),
7878
+ /* @__PURE__ */ jsx5(
7879
+ "button",
7880
+ {
7881
+ type: "button",
7882
+ onClick: () => {
7883
+ textEditorRef.current?.commands.wrapInList("bullet_list");
7884
+ },
7885
+ className: "button-icon-base text-[20px]",
7886
+ children: /* @__PURE__ */ jsx5(GoListUnordered, {})
7887
+ }
7888
+ )
7889
+ ]
7890
+ }
8030
7891
  );
8031
7892
  }
8032
7893
 
@@ -8034,26 +7895,27 @@ function EditorToolbar({
8034
7895
  import { useLoaderData as useLoaderData3 } from "react-router";
8035
7896
  import { cn as cn6, toSlug } from "dn-react-toolkit/utils";
8036
7897
  import { useStoreComponent as useStoreComponent2 } from "react-store-input";
8037
- import React16, { useRef as useRef2 } from "react";
7898
+ import { useRef as useRef3 } from "react";
8038
7899
  import "dn-react-text-editor";
8039
7900
 
8040
7901
  // src/crud/crud_form_provider.tsx
8041
7902
  import { useNavigate } from "react-router";
8042
7903
  import { useStore } from "react-store-input";
8043
- import { createContext, useContext } from "react";
8044
- import React8 from "react";
7904
+ import {
7905
+ createContext,
7906
+ useContext
7907
+ } from "react";
7908
+ import { jsx as jsx6 } from "react/jsx-runtime";
8045
7909
  var FormContext = createContext({});
8046
7910
 
8047
- // src/crud/crud_form.tsx
8048
- import React10 from "react";
8049
-
8050
7911
  // src/form/create_form_component.tsx
8051
7912
  import { cn as cn3 } from "dn-react-toolkit/utils";
8052
- import React9 from "react";
7913
+ import "react";
7914
+ import { jsx as jsx7 } from "react/jsx-runtime";
8053
7915
  function createComponent(tag, options) {
8054
7916
  return function FormComponent({ className, ...props }) {
8055
7917
  const Tag = tag;
8056
- return /* @__PURE__ */ React9.createElement(Tag, { ...props, className: cn3(options.className, className) });
7918
+ return /* @__PURE__ */ jsx7(Tag, { ...props, className: cn3(options.className, className) });
8057
7919
  };
8058
7920
  }
8059
7921
 
@@ -8070,6 +7932,7 @@ var FormLabel = createComponent("label", {
8070
7932
 
8071
7933
  // src/crud/crud_form.tsx
8072
7934
  import { useStoreComponent } from "react-store-input";
7935
+ import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
8073
7936
 
8074
7937
  // src/table/loader.tsx
8075
7938
  import {
@@ -8107,31 +7970,34 @@ import {
8107
7970
  useNavigate as useNavigate2,
8108
7971
  useSearchParams as useSearchParams3
8109
7972
  } from "react-router";
7973
+ import { GoSearch } from "react-icons/go";
8110
7974
 
8111
7975
  // src/table/buttons.tsx
8112
7976
  import { cn as cn4 } from "dn-react-toolkit/utils";
8113
7977
  import { Link, useLocation, useSearchParams } from "react-router";
8114
- import React11 from "react";
7978
+ import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
8115
7979
 
8116
7980
  // src/table/table.tsx
8117
7981
  import { cn as cn5 } from "dn-react-toolkit/utils";
7982
+ import { GoArrowDown, GoArrowUp } from "react-icons/go";
8118
7983
  import { Link as Link2, useSearchParams as useSearchParams2 } from "react-router";
8119
- import React12 from "react";
7984
+ import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
8120
7985
 
8121
7986
  // src/table/page.tsx
8122
- import React13 from "react";
7987
+ import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
8123
7988
 
8124
7989
  // src/crud/crud_page.tsx
8125
- import React14 from "react";
7990
+ import { jsx as jsx12 } from "react/jsx-runtime";
8126
7991
 
8127
7992
  // src/crud/generate_pages.tsx
8128
7993
  import { useLocation as useLocation4 } from "react-router";
8129
- import React15 from "react";
7994
+ import { jsx as jsx13 } from "react/jsx-runtime";
8130
7995
 
8131
7996
  // src/crud/generate_routes.tsx
8132
7997
  var Routes = __toESM(require_routes());
8133
7998
 
8134
7999
  // src/post/post_form_page.tsx
8000
+ import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
8135
8001
  var createPostFormPage = ({
8136
8002
  header: AdminPageHeader,
8137
8003
  textEditorClassName,
@@ -8140,128 +8006,190 @@ var createPostFormPage = ({
8140
8006
  return function PostFormPage({ form }) {
8141
8007
  const { boards } = useLoaderData3();
8142
8008
  const component = useStoreComponent2(form.store);
8143
- const textEditorRef = useRef2(null);
8144
- return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
8145
- AdminPageHeader,
8146
- {
8147
- title: `${form.name} \uCD94\uAC00`,
8148
- actions: /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
8149
- "button",
8150
- {
8151
- type: "button",
8152
- className: "button-outline",
8153
- onClick: () => {
8154
- form.delete();
8009
+ const textEditorRef = useRef3(null);
8010
+ return /* @__PURE__ */ jsxs7(Fragment6, { children: [
8011
+ /* @__PURE__ */ jsx14(
8012
+ AdminPageHeader,
8013
+ {
8014
+ title: `${form.name} \uCD94\uAC00`,
8015
+ actions: /* @__PURE__ */ jsxs7(Fragment6, { children: [
8016
+ /* @__PURE__ */ jsx14(
8017
+ "button",
8018
+ {
8019
+ type: "button",
8020
+ className: "button-outline",
8021
+ onClick: () => {
8022
+ form.delete();
8023
+ },
8024
+ children: "\uC0AD\uC81C\uD558\uAE30"
8025
+ }
8026
+ ),
8027
+ /* @__PURE__ */ jsx14(
8028
+ "button",
8029
+ {
8030
+ type: "button",
8031
+ className: "button-primary",
8032
+ onClick: () => {
8033
+ form.submit();
8034
+ },
8035
+ children: "\uC800\uC7A5\uD558\uAE30"
8036
+ }
8037
+ )
8038
+ ] })
8039
+ }
8040
+ ),
8041
+ /* @__PURE__ */ jsx14("div", { className: "px-4", children: /* @__PURE__ */ jsxs7("div", { className: "max-w-7xl mx-auto w-full", children: [
8042
+ /* @__PURE__ */ jsxs7(FormRow, { children: [
8043
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8044
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uACF5\uAC1C\uC5EC\uBD80" }),
8045
+ /* @__PURE__ */ jsxs7(
8046
+ component.select,
8047
+ {
8048
+ name: "isPublic",
8049
+ className: "select-form",
8050
+ toInputValue: (value) => value ? "true" : "false",
8051
+ toStateValue: (value) => Boolean(value === "true"),
8052
+ children: [
8053
+ /* @__PURE__ */ jsx14("option", { value: "true", children: "\uACF5\uAC1C" }),
8054
+ /* @__PURE__ */ jsx14("option", { value: "false", children: "\uBE44\uACF5\uAC1C" })
8055
+ ]
8056
+ }
8057
+ )
8058
+ ] }),
8059
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8060
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uC791\uC131\uC77C\uC2DC" }),
8061
+ /* @__PURE__ */ jsx14(
8062
+ component.input,
8063
+ {
8064
+ name: "createdAt",
8065
+ className: "input-form",
8066
+ type: "datetime-local"
8067
+ }
8068
+ )
8069
+ ] })
8070
+ ] }),
8071
+ /* @__PURE__ */ jsxs7(FormRow, { children: [
8072
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8073
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uAC8C\uC2DC\uD310" }),
8074
+ /* @__PURE__ */ jsxs7(component.select, { name: "boardId", className: "select-form", children: [
8075
+ /* @__PURE__ */ jsx14("option", { value: "", children: "\uC120\uD0DD\uD558\uC138\uC694" }),
8076
+ boards.map((board) => /* @__PURE__ */ jsx14("option", { value: board.id, children: board.title }, board.id))
8077
+ ] })
8078
+ ] }),
8079
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8080
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uCE74\uD14C\uACE0\uB9AC" }),
8081
+ /* @__PURE__ */ jsx14(
8082
+ component.input,
8083
+ {
8084
+ name: "category",
8085
+ className: "input-form",
8086
+ placeholder: "\uCE74\uD14C\uACE0\uB9AC"
8087
+ }
8088
+ )
8089
+ ] })
8090
+ ] }),
8091
+ /* @__PURE__ */ jsxs7(FormRow, { children: [
8092
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8093
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uC81C\uBAA9" }),
8094
+ /* @__PURE__ */ jsx14(
8095
+ component.input,
8096
+ {
8097
+ name: "title",
8098
+ className: "input-form",
8099
+ placeholder: "\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694",
8100
+ onChange: (e) => {
8101
+ const title = e.target.value;
8102
+ form.store.dispatch((state) => {
8103
+ state.slug = toSlug(title);
8104
+ });
8105
+ }
8106
+ }
8107
+ )
8108
+ ] }),
8109
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8110
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uBD80\uC81C\uBAA9" }),
8111
+ /* @__PURE__ */ jsx14(
8112
+ component.input,
8113
+ {
8114
+ name: "subtitle",
8115
+ className: "input-form",
8116
+ placeholder: "\uBD80\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694"
8117
+ }
8118
+ )
8119
+ ] })
8120
+ ] }),
8121
+ /* @__PURE__ */ jsxs7(FormRow, { children: [
8122
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8123
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uC2AC\uB7EC\uADF8" }),
8124
+ /* @__PURE__ */ jsx14(
8125
+ component.input,
8126
+ {
8127
+ name: "slug",
8128
+ className: "input-form",
8129
+ placeholder: "\uC81C\uBAA9"
8130
+ }
8131
+ )
8132
+ ] }),
8133
+ /* @__PURE__ */ jsxs7(FormEntry, { children: [
8134
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uD0DC\uADF8" }),
8135
+ /* @__PURE__ */ jsx14(
8136
+ component.input,
8137
+ {
8138
+ name: "tags",
8139
+ className: "input-form",
8140
+ placeholder: "\uD0DC\uADF8 1, \uD0DC\uADF8 2, \uD0DC\uADF8 3"
8141
+ }
8142
+ )
8143
+ ] })
8144
+ ] }),
8145
+ /* @__PURE__ */ jsx14(FormRow, { children: /* @__PURE__ */ jsxs7(FormEntry, { children: [
8146
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uC124\uBA85" }),
8147
+ /* @__PURE__ */ jsx14(
8148
+ StoreTextEditor,
8149
+ {
8150
+ store: form.store,
8151
+ mode: "text",
8152
+ name: "description",
8153
+ className: "text-editor min-h-[80px]",
8154
+ placeholder: "\uC124\uBA85"
8155
8155
  }
8156
- },
8157
- "\uC0AD\uC81C\uD558\uAE30"
8158
- ), /* @__PURE__ */ React16.createElement(
8159
- "button",
8160
- {
8161
- type: "button",
8162
- className: "button-primary",
8163
- onClick: () => {
8164
- form.submit();
8156
+ )
8157
+ ] }) }),
8158
+ /* @__PURE__ */ jsx14(FormRow, { children: /* @__PURE__ */ jsxs7(FormEntry, { children: [
8159
+ /* @__PURE__ */ jsx14(FormLabel, { children: "\uC378\uB124\uC77C" }),
8160
+ /* @__PURE__ */ jsx14(
8161
+ PostThumbnailPicker,
8162
+ {
8163
+ store: form.store,
8164
+ textEditorRef
8165
+ }
8166
+ )
8167
+ ] }) })
8168
+ ] }) }),
8169
+ /* @__PURE__ */ jsx14("div", { className: "sticky top-[160px] z-998 bg-white px-4", children: /* @__PURE__ */ jsx14(
8170
+ EditorToolbar,
8171
+ {
8172
+ textEditorRef,
8173
+ className: "max-w-7xl mx-auto"
8174
+ }
8175
+ ) }),
8176
+ /* @__PURE__ */ jsx14("div", { className: "px-4", children: /* @__PURE__ */ jsx14(
8177
+ StoreTextEditor,
8178
+ {
8179
+ ref: textEditorRef,
8180
+ store: form.store,
8181
+ name: "html",
8182
+ placeholder: "\uC5EC\uAE30\uC5D0 \uBCF8\uBB38\uC744 \uC791\uC131\uD558\uC138\uC694...",
8183
+ updateDelay: 500,
8184
+ editor: {
8185
+ attributes: {
8186
+ class: cn6(textEditorClassName, "pb-[50vh]")
8165
8187
  }
8166
8188
  },
8167
- "\uC800\uC7A5\uD558\uAE30"
8168
- ))
8169
- }
8170
- ), /* @__PURE__ */ React16.createElement("div", { className: "px-4" }, /* @__PURE__ */ React16.createElement("div", { className: "max-w-7xl mx-auto w-full" }, /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uACF5\uAC1C\uC5EC\uBD80"), /* @__PURE__ */ React16.createElement(
8171
- component.select,
8172
- {
8173
- name: "isPublic",
8174
- className: "select-form",
8175
- toInputValue: (value) => value ? "true" : "false",
8176
- toStateValue: (value) => Boolean(value === "true")
8177
- },
8178
- /* @__PURE__ */ React16.createElement("option", { value: "true" }, "\uACF5\uAC1C"),
8179
- /* @__PURE__ */ React16.createElement("option", { value: "false" }, "\uBE44\uACF5\uAC1C")
8180
- )), /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uC791\uC131\uC77C\uC2DC"), /* @__PURE__ */ React16.createElement(
8181
- component.input,
8182
- {
8183
- name: "createdAt",
8184
- className: "input-form",
8185
- type: "datetime-local"
8186
- }
8187
- ))), /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uAC8C\uC2DC\uD310"), /* @__PURE__ */ React16.createElement(component.select, { name: "boardId", className: "select-form" }, /* @__PURE__ */ React16.createElement("option", { value: "" }, "\uC120\uD0DD\uD558\uC138\uC694"), boards.map((board) => /* @__PURE__ */ React16.createElement("option", { key: board.id, value: board.id }, board.title)))), /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uCE74\uD14C\uACE0\uB9AC"), /* @__PURE__ */ React16.createElement(
8188
- component.input,
8189
- {
8190
- name: "category",
8191
- className: "input-form",
8192
- placeholder: "\uCE74\uD14C\uACE0\uB9AC"
8193
- }
8194
- ))), /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uC81C\uBAA9"), /* @__PURE__ */ React16.createElement(
8195
- component.input,
8196
- {
8197
- name: "title",
8198
- className: "input-form",
8199
- placeholder: "\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694",
8200
- onChange: (e) => {
8201
- const title = e.target.value;
8202
- form.store.dispatch((state) => {
8203
- state.slug = toSlug(title);
8204
- });
8189
+ attachFile
8205
8190
  }
8206
- }
8207
- )), /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uBD80\uC81C\uBAA9"), /* @__PURE__ */ React16.createElement(
8208
- component.input,
8209
- {
8210
- name: "subtitle",
8211
- className: "input-form",
8212
- placeholder: "\uBD80\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694"
8213
- }
8214
- ))), /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uC2AC\uB7EC\uADF8"), /* @__PURE__ */ React16.createElement(
8215
- component.input,
8216
- {
8217
- name: "slug",
8218
- className: "input-form",
8219
- placeholder: "\uC81C\uBAA9"
8220
- }
8221
- )), /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uD0DC\uADF8"), /* @__PURE__ */ React16.createElement(
8222
- component.input,
8223
- {
8224
- name: "tags",
8225
- className: "input-form",
8226
- placeholder: "\uD0DC\uADF8 1, \uD0DC\uADF8 2, \uD0DC\uADF8 3"
8227
- }
8228
- ))), /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uC124\uBA85"), /* @__PURE__ */ React16.createElement(
8229
- StoreTextEditor,
8230
- {
8231
- store: form.store,
8232
- mode: "text",
8233
- name: "description",
8234
- className: "text-editor min-h-[80px]",
8235
- placeholder: "\uC124\uBA85"
8236
- }
8237
- ))), /* @__PURE__ */ React16.createElement(FormRow, null, /* @__PURE__ */ React16.createElement(FormEntry, null, /* @__PURE__ */ React16.createElement(FormLabel, null, "\uC378\uB124\uC77C"), /* @__PURE__ */ React16.createElement(
8238
- PostThumbnailPicker,
8239
- {
8240
- store: form.store,
8241
- textEditorRef
8242
- }
8243
- ))))), /* @__PURE__ */ React16.createElement("div", { className: "sticky top-[160px] z-998 bg-white px-4" }, /* @__PURE__ */ React16.createElement(
8244
- EditorToolbar,
8245
- {
8246
- textEditorRef,
8247
- className: "max-w-7xl mx-auto"
8248
- }
8249
- )), /* @__PURE__ */ React16.createElement("div", { className: "px-4" }, /* @__PURE__ */ React16.createElement(
8250
- StoreTextEditor,
8251
- {
8252
- ref: textEditorRef,
8253
- store: form.store,
8254
- name: "html",
8255
- placeholder: "\uC5EC\uAE30\uC5D0 \uBCF8\uBB38\uC744 \uC791\uC131\uD558\uC138\uC694...",
8256
- updateDelay: 500,
8257
- editor: {
8258
- attributes: {
8259
- class: cn6(textEditorClassName, "pb-[50vh]")
8260
- }
8261
- },
8262
- attachFile
8263
- }
8264
- )));
8191
+ ) })
8192
+ ] });
8265
8193
  };
8266
8194
  };
8267
8195
  export {