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.
- package/dist/api/create_api_handler.d.mts +5 -5
- package/dist/api/create_api_handler.d.ts +5 -5
- package/dist/api/index.d.mts +7 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.js +163 -2
- package/dist/api/index.mjs +169 -1
- package/dist/client/env_loader.d.mts +2 -2
- package/dist/client/env_loader.d.ts +2 -2
- package/dist/client/env_loader.js +2 -12
- package/dist/client/env_loader.mjs +2 -2
- package/dist/client/file_input.d.mts +3 -2
- package/dist/client/file_input.d.ts +3 -2
- package/dist/client/file_input.js +30 -37
- package/dist/client/file_input.mjs +33 -28
- package/dist/client/index.d.mts +1 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +38 -44
- package/dist/client/index.mjs +39 -33
- package/dist/client/store_text_editor.d.mts +2 -2
- package/dist/client/store_text_editor.d.ts +2 -2
- package/dist/client/store_text_editor.js +3 -12
- package/dist/client/store_text_editor.mjs +3 -2
- package/dist/crud/crud_form.d.mts +5 -4
- package/dist/crud/crud_form.d.ts +5 -4
- package/dist/crud/crud_form.js +74 -72
- package/dist/crud/crud_form.mjs +79 -62
- package/dist/crud/crud_form_provider.d.mts +9 -7
- package/dist/crud/crud_form_provider.d.ts +9 -7
- package/dist/crud/crud_form_provider.js +2 -12
- package/dist/crud/crud_form_provider.mjs +6 -3
- package/dist/crud/crud_page.d.mts +10 -6
- package/dist/crud/crud_page.d.ts +10 -6
- package/dist/crud/crud_page.js +272 -409
- package/dist/crud/crud_page.mjs +277 -399
- package/dist/crud/generate_pages.d.mts +10 -2
- package/dist/crud/generate_pages.d.ts +10 -2
- package/dist/crud/generate_pages.js +17 -14
- package/dist/crud/generate_pages.mjs +17 -4
- package/dist/crud/index.d.mts +2 -1
- package/dist/crud/index.d.ts +2 -1
- package/dist/crud/index.js +290 -404
- package/dist/crud/index.mjs +295 -404
- package/dist/form/create_form_component.d.mts +3 -2
- package/dist/form/create_form_component.d.ts +3 -2
- package/dist/form/create_form_component.js +3 -12
- package/dist/form/create_form_component.mjs +3 -2
- package/dist/form/form_components.d.mts +5 -4
- package/dist/form/form_components.d.ts +5 -4
- package/dist/form/form_components.js +3 -12
- package/dist/form/form_components.mjs +3 -2
- package/dist/form/index.d.mts +1 -0
- package/dist/form/index.d.ts +1 -0
- package/dist/form/index.js +3 -12
- package/dist/form/index.mjs +3 -2
- package/dist/post/editor_toolbar.d.mts +4 -3
- package/dist/post/editor_toolbar.d.ts +4 -3
- package/dist/post/editor_toolbar.js +116 -273
- package/dist/post/editor_toolbar.mjs +123 -263
- package/dist/post/index.d.mts +1 -0
- package/dist/post/index.d.ts +1 -0
- package/dist/post/index.js +329 -411
- package/dist/post/index.mjs +337 -409
- package/dist/post/post_form_page.d.mts +5 -4
- package/dist/post/post_form_page.d.ts +5 -4
- package/dist/post/post_form_page.js +331 -413
- package/dist/post/post_form_page.mjs +337 -409
- package/dist/post/thumbnail_picker.d.mts +3 -2
- package/dist/post/thumbnail_picker.d.ts +3 -2
- package/dist/post/thumbnail_picker.js +14 -23
- package/dist/post/thumbnail_picker.mjs +14 -13
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.d.ts +1 -1
- package/dist/seo/index.js +2 -2
- package/dist/seo/index.mjs +2 -2
- package/dist/seo/seo.d.mts +2 -2
- package/dist/seo/seo.d.ts +2 -2
- package/dist/seo/seo.js +2 -2
- package/dist/seo/seo.mjs +2 -2
- package/dist/table/buttons.d.mts +2 -2
- package/dist/table/buttons.d.ts +2 -2
- package/dist/table/buttons.js +42 -57
- package/dist/table/buttons.mjs +42 -47
- package/dist/table/index.d.mts +1 -0
- package/dist/table/index.d.ts +1 -0
- package/dist/table/index.js +185 -338
- package/dist/table/index.mjs +185 -328
- package/dist/table/page.d.mts +5 -4
- package/dist/table/page.d.ts +5 -4
- package/dist/table/page.js +185 -338
- package/dist/table/page.mjs +185 -328
- package/dist/table/table.d.mts +5 -4
- package/dist/table/table.d.ts +5 -4
- package/dist/table/table.js +77 -237
- package/dist/table/table.mjs +77 -227
- package/package.json +7 -5
package/dist/post/index.mjs
CHANGED
|
@@ -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
|
|
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__ */
|
|
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
|
-
|
|
7644
|
-
|
|
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
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
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
|
|
7818
|
-
|
|
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 =
|
|
7829
|
-
return /* @__PURE__ */
|
|
7830
|
-
|
|
7831
|
-
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
|
|
7835
|
-
|
|
7836
|
-
|
|
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
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7842
|
-
|
|
7843
|
-
|
|
7844
|
-
|
|
7845
|
-
|
|
7846
|
-
|
|
7847
|
-
|
|
7848
|
-
|
|
7849
|
-
|
|
7850
|
-
|
|
7851
|
-
|
|
7852
|
-
|
|
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
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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
|
-
|
|
7954
|
-
|
|
7955
|
-
|
|
7956
|
-
|
|
7957
|
-
|
|
7958
|
-
|
|
7959
|
-
|
|
7960
|
-
|
|
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
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
7966
|
-
|
|
7967
|
-
|
|
7968
|
-
|
|
7969
|
-
|
|
7970
|
-
|
|
7971
|
-
|
|
7972
|
-
|
|
7973
|
-
|
|
7974
|
-
|
|
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
|
-
|
|
7977
|
-
|
|
7978
|
-
|
|
7979
|
-
|
|
7980
|
-
|
|
7981
|
-
|
|
7982
|
-
|
|
7983
|
-
|
|
7984
|
-
|
|
7985
|
-
|
|
7986
|
-
|
|
7987
|
-
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
|
|
7991
|
-
|
|
7992
|
-
|
|
7993
|
-
|
|
7994
|
-
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8002
|
-
|
|
8003
|
-
|
|
8004
|
-
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
8019
|
-
|
|
8020
|
-
|
|
8021
|
-
|
|
8022
|
-
|
|
8023
|
-
|
|
8024
|
-
|
|
8025
|
-
|
|
8026
|
-
|
|
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
|
|
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 {
|
|
8044
|
-
|
|
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
|
|
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__ */
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
8144
|
-
return /* @__PURE__ */
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
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
|
-
|
|
8158
|
-
|
|
8159
|
-
"
|
|
8160
|
-
|
|
8161
|
-
|
|
8162
|
-
|
|
8163
|
-
|
|
8164
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|