@blinkk/root-cms 1.0.0-beta.56 → 1.0.0-beta.58
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/ui/ui.css +21 -2
- package/dist/ui/ui.js +283 -156
- package/package.json +3 -3
package/dist/ui/ui.css
CHANGED
|
@@ -834,6 +834,13 @@
|
|
|
834
834
|
flex-direction: column;
|
|
835
835
|
gap: 24px;
|
|
836
836
|
}
|
|
837
|
+
.DocEditor__ImageField {
|
|
838
|
+
padding: 10px;
|
|
839
|
+
margin: -10px;
|
|
840
|
+
}
|
|
841
|
+
.DocEditor__ImageField.dragging {
|
|
842
|
+
outline: 2px dashed black;
|
|
843
|
+
}
|
|
837
844
|
.DocEditor__ImageField__imagePreview {
|
|
838
845
|
margin-bottom: 10px;
|
|
839
846
|
}
|
|
@@ -873,7 +880,7 @@
|
|
|
873
880
|
}
|
|
874
881
|
.DocEditor__ImageField__noImage {
|
|
875
882
|
font-family: var(--font-family-mono);
|
|
876
|
-
margin: 10px
|
|
883
|
+
margin-bottom: 10px;
|
|
877
884
|
}
|
|
878
885
|
.DocEditor__ImageField__uploadButton {
|
|
879
886
|
display: inline-flex;
|
|
@@ -896,12 +903,24 @@
|
|
|
896
903
|
.DocEditor__ImageField__uploadButton__icon {
|
|
897
904
|
margin-right: 10px;
|
|
898
905
|
}
|
|
906
|
+
.DocEditor__FileField {
|
|
907
|
+
padding: 10px;
|
|
908
|
+
margin: -10px;
|
|
909
|
+
}
|
|
910
|
+
.DocEditor__FileField.dragging {
|
|
911
|
+
outline: 2px dashed black;
|
|
912
|
+
}
|
|
913
|
+
.DocEditor__FileField__controls {
|
|
914
|
+
display: flex;
|
|
915
|
+
justify-content: flex-end;
|
|
916
|
+
gap: 4px;
|
|
917
|
+
}
|
|
899
918
|
.DocEditor__FileField__file {
|
|
900
919
|
margin-bottom: 10px;
|
|
901
920
|
}
|
|
902
921
|
.DocEditor__FileField__noFile {
|
|
903
922
|
font-family: var(--font-family-mono);
|
|
904
|
-
margin: 10px
|
|
923
|
+
margin-bottom: 10px;
|
|
905
924
|
}
|
|
906
925
|
.DocEditor__FileField__uploadButton {
|
|
907
926
|
display: inline-flex;
|
package/dist/ui/ui.js
CHANGED
|
@@ -39182,7 +39182,6 @@ ${this.customData.serverResponse}`;
|
|
|
39182
39182
|
localeSet.delete(locale);
|
|
39183
39183
|
}
|
|
39184
39184
|
}
|
|
39185
|
-
localeSet.add("en");
|
|
39186
39185
|
const newLocales = Array.from(localeSet.values()).sort();
|
|
39187
39186
|
updateEnabledLocales(newLocales);
|
|
39188
39187
|
}
|
|
@@ -39213,30 +39212,23 @@ ${this.customData.serverResponse}`;
|
|
|
39213
39212
|
] }),
|
|
39214
39213
|
/* @__PURE__ */ o4(Stack, { spacing: 40, children: Object.keys(localeGroups).map((groupId) => {
|
|
39215
39214
|
const group = localeGroups[groupId];
|
|
39216
|
-
const
|
|
39215
|
+
const groupEnabledLocales = enabledLocalesFor(groupId);
|
|
39217
39216
|
return /* @__PURE__ */ o4(
|
|
39218
39217
|
LocalizationModal.LocaleGroup,
|
|
39219
39218
|
{
|
|
39220
39219
|
group,
|
|
39221
|
-
|
|
39220
|
+
groupEnabledLocales,
|
|
39221
|
+
allEnabledLocales: enabledLocales,
|
|
39222
39222
|
onChange: (locales) => setGroupEnabledLocales(groupId, locales)
|
|
39223
39223
|
}
|
|
39224
39224
|
);
|
|
39225
39225
|
}) })
|
|
39226
39226
|
] }) });
|
|
39227
39227
|
};
|
|
39228
|
-
function getLocaleLabel(locale) {
|
|
39229
|
-
const langNames = new Intl.DisplayNames(["en"], {
|
|
39230
|
-
type: "language"
|
|
39231
|
-
});
|
|
39232
|
-
const parts = locale.split("_");
|
|
39233
|
-
const langCode = parts[0];
|
|
39234
|
-
const langName = langNames.of(langCode) || locale;
|
|
39235
|
-
return `${langName} (${locale})`;
|
|
39236
|
-
}
|
|
39237
39228
|
LocalizationModal.LocaleGroup = (props) => {
|
|
39238
|
-
const enabledLocales = props.
|
|
39229
|
+
const enabledLocales = props.groupEnabledLocales || [];
|
|
39239
39230
|
const groupLocales = props.group.locales || [];
|
|
39231
|
+
const allEnabledLocales = props.allEnabledLocales || [];
|
|
39240
39232
|
function setEnabledLocales(locales) {
|
|
39241
39233
|
if (props.onChange) {
|
|
39242
39234
|
props.onChange(locales);
|
|
@@ -39262,17 +39254,21 @@ ${this.customData.serverResponse}`;
|
|
|
39262
39254
|
}
|
|
39263
39255
|
)
|
|
39264
39256
|
] }),
|
|
39265
|
-
/* @__PURE__ */ o4(Group, { children: groupLocales.map((locale) =>
|
|
39266
|
-
|
|
39267
|
-
|
|
39268
|
-
|
|
39269
|
-
|
|
39270
|
-
|
|
39271
|
-
|
|
39272
|
-
|
|
39273
|
-
|
|
39274
|
-
|
|
39275
|
-
|
|
39257
|
+
/* @__PURE__ */ o4(Group, { children: groupLocales.map((locale) => {
|
|
39258
|
+
const checked = enabledLocales.includes(locale);
|
|
39259
|
+
const disabled = allEnabledLocales.length <= 1 && checked;
|
|
39260
|
+
return /* @__PURE__ */ o4(
|
|
39261
|
+
Checkbox,
|
|
39262
|
+
{
|
|
39263
|
+
value: locale,
|
|
39264
|
+
checked,
|
|
39265
|
+
disabled,
|
|
39266
|
+
label: getLocaleLabel(locale),
|
|
39267
|
+
onChange: () => toggleLocale(locale),
|
|
39268
|
+
size: "xs"
|
|
39269
|
+
}
|
|
39270
|
+
);
|
|
39271
|
+
}) })
|
|
39276
39272
|
] });
|
|
39277
39273
|
};
|
|
39278
39274
|
LocalizationModal.AllNoneButtons = (props) => {
|
|
@@ -39633,6 +39629,15 @@ ${this.customData.serverResponse}`;
|
|
|
39633
39629
|
}
|
|
39634
39630
|
);
|
|
39635
39631
|
}
|
|
39632
|
+
function getLocaleLabel(locale) {
|
|
39633
|
+
const langNames = new Intl.DisplayNames(["en"], {
|
|
39634
|
+
type: "language"
|
|
39635
|
+
});
|
|
39636
|
+
const parts = locale.split("_");
|
|
39637
|
+
const langCode = parts[0];
|
|
39638
|
+
const langName = langNames.of(langCode) || locale;
|
|
39639
|
+
return `${langName} (${locale})`;
|
|
39640
|
+
}
|
|
39636
39641
|
|
|
39637
39642
|
// ui/components/PublishDocModal/PublishDocModal.tsx
|
|
39638
39643
|
var MODAL_ID4 = "PublishDocModal";
|
|
@@ -39854,7 +39859,7 @@ ${this.customData.serverResponse}`;
|
|
|
39854
39859
|
// package.json
|
|
39855
39860
|
var package_default = {
|
|
39856
39861
|
name: "@blinkk/root-cms",
|
|
39857
|
-
version: "1.0.0-beta.
|
|
39862
|
+
version: "1.0.0-beta.58",
|
|
39858
39863
|
author: "s@blinkk.com",
|
|
39859
39864
|
license: "MIT",
|
|
39860
39865
|
engines: {
|
|
@@ -39957,7 +39962,7 @@ ${this.customData.serverResponse}`;
|
|
|
39957
39962
|
vitest: "^0.18.1"
|
|
39958
39963
|
},
|
|
39959
39964
|
peerDependencies: {
|
|
39960
|
-
"@blinkk/root": "1.0.0-beta.
|
|
39965
|
+
"@blinkk/root": "1.0.0-beta.58",
|
|
39961
39966
|
"firebase-admin": ">=11",
|
|
39962
39967
|
"firebase-functions": ">=4",
|
|
39963
39968
|
preact: "10.x",
|
|
@@ -43854,28 +43859,24 @@ ${content}</tr>
|
|
|
43854
43859
|
reader.readAsDataURL(file);
|
|
43855
43860
|
});
|
|
43856
43861
|
}
|
|
43862
|
+
var IMAGE_MIMETYPES = [
|
|
43863
|
+
"image/png",
|
|
43864
|
+
"image/jpeg",
|
|
43865
|
+
"image/svg+xml",
|
|
43866
|
+
"image/webp"
|
|
43867
|
+
];
|
|
43857
43868
|
DocEditor.ImageField = (props) => {
|
|
43858
43869
|
const field = props.field;
|
|
43859
43870
|
const [img, setImg] = y2({});
|
|
43860
|
-
const inputRef = A2(null);
|
|
43861
43871
|
const [loading, setLoading] = y2(false);
|
|
43862
|
-
|
|
43863
|
-
|
|
43864
|
-
|
|
43865
|
-
|
|
43866
|
-
setImg(newValue);
|
|
43867
|
-
}
|
|
43868
|
-
);
|
|
43869
|
-
return unsubscribe;
|
|
43870
|
-
}, []);
|
|
43871
|
-
const exts = field.exts ?? [".png", ".jpg", ".jpeg", ".svg"];
|
|
43872
|
+
const [isDragging, setIsDragging] = y2(false);
|
|
43873
|
+
const inputRef = A2(null);
|
|
43874
|
+
const ref2 = A2(null);
|
|
43875
|
+
const exts = field.exts ?? IMAGE_MIMETYPES;
|
|
43872
43876
|
const accept = exts.join(", ");
|
|
43873
|
-
async function
|
|
43877
|
+
async function uploadFile(file) {
|
|
43878
|
+
setLoading(true);
|
|
43874
43879
|
try {
|
|
43875
|
-
setLoading(true);
|
|
43876
|
-
const inputEl = e3.target;
|
|
43877
|
-
const files = inputEl.files || [];
|
|
43878
|
-
const file = files[0];
|
|
43879
43880
|
const uploadedImage = await uploadFileToGCS(file);
|
|
43880
43881
|
setImg((currentImg) => {
|
|
43881
43882
|
const newImage = Object.assign({}, uploadedImage, {
|
|
@@ -43901,6 +43902,14 @@ ${content}</tr>
|
|
|
43901
43902
|
inputEl.value = "";
|
|
43902
43903
|
}
|
|
43903
43904
|
}
|
|
43905
|
+
function onFileChange(e3) {
|
|
43906
|
+
const inputEl = e3.target;
|
|
43907
|
+
const files = inputEl.files || [];
|
|
43908
|
+
const file = files[0];
|
|
43909
|
+
if (file) {
|
|
43910
|
+
uploadFile(file);
|
|
43911
|
+
}
|
|
43912
|
+
}
|
|
43904
43913
|
async function setAltText(newValue) {
|
|
43905
43914
|
setImg((currentImg) => {
|
|
43906
43915
|
return Object.assign({}, currentImg, { alt: newValue });
|
|
@@ -43911,97 +43920,149 @@ ${content}</tr>
|
|
|
43911
43920
|
setImg({});
|
|
43912
43921
|
props.draft.removeKey(props.deepKey);
|
|
43913
43922
|
}
|
|
43914
|
-
|
|
43915
|
-
|
|
43916
|
-
|
|
43917
|
-
|
|
43918
|
-
|
|
43919
|
-
|
|
43920
|
-
|
|
43921
|
-
|
|
43922
|
-
|
|
43923
|
-
|
|
43924
|
-
|
|
43925
|
-
|
|
43926
|
-
|
|
43927
|
-
|
|
43928
|
-
|
|
43929
|
-
|
|
43930
|
-
|
|
43931
|
-
|
|
43932
|
-
|
|
43933
|
-
|
|
43934
|
-
|
|
43935
|
-
|
|
43936
|
-
|
|
43937
|
-
|
|
43938
|
-
|
|
43939
|
-
|
|
43940
|
-
|
|
43941
|
-
|
|
43942
|
-
|
|
43943
|
-
|
|
43923
|
+
const handleDragEnter = (e3) => {
|
|
43924
|
+
e3.preventDefault();
|
|
43925
|
+
setIsDragging(true);
|
|
43926
|
+
};
|
|
43927
|
+
const handleDragLeave = (e3) => {
|
|
43928
|
+
e3.preventDefault();
|
|
43929
|
+
setIsDragging(false);
|
|
43930
|
+
};
|
|
43931
|
+
const handleDrop = (e3) => {
|
|
43932
|
+
e3.preventDefault();
|
|
43933
|
+
setIsDragging(false);
|
|
43934
|
+
const files = e3.dataTransfer?.files || [];
|
|
43935
|
+
const file = files[0];
|
|
43936
|
+
if (file) {
|
|
43937
|
+
console.log(`file dropped ("${props.deepKey}"):`, file);
|
|
43938
|
+
uploadFile(file);
|
|
43939
|
+
}
|
|
43940
|
+
};
|
|
43941
|
+
s2(() => {
|
|
43942
|
+
const unsubscribe = props.draft.subscribe(
|
|
43943
|
+
props.deepKey,
|
|
43944
|
+
(newValue) => {
|
|
43945
|
+
setImg(newValue);
|
|
43946
|
+
}
|
|
43947
|
+
);
|
|
43948
|
+
const dropzone = ref2.current;
|
|
43949
|
+
document.addEventListener("dragenter", handleDragEnter);
|
|
43950
|
+
document.addEventListener("dragover", handleDragEnter);
|
|
43951
|
+
document.addEventListener("dragleave", handleDragLeave);
|
|
43952
|
+
document.addEventListener("drop", handleDragLeave);
|
|
43953
|
+
if (dropzone) {
|
|
43954
|
+
dropzone.addEventListener("drop", handleDrop);
|
|
43955
|
+
}
|
|
43956
|
+
return () => {
|
|
43957
|
+
unsubscribe();
|
|
43958
|
+
document.removeEventListener("dragenter", handleDragEnter);
|
|
43959
|
+
document.removeEventListener("dragover", handleDragEnter);
|
|
43960
|
+
document.removeEventListener("dragleave", handleDragLeave);
|
|
43961
|
+
document.removeEventListener("drop", handleDragLeave);
|
|
43962
|
+
if (dropzone) {
|
|
43963
|
+
dropzone.removeEventListener("drop", handleDrop);
|
|
43964
|
+
}
|
|
43965
|
+
};
|
|
43966
|
+
}, []);
|
|
43967
|
+
return /* @__PURE__ */ o4(
|
|
43968
|
+
"div",
|
|
43969
|
+
{
|
|
43970
|
+
className: joinClassNames(
|
|
43971
|
+
"DocEditor__ImageField",
|
|
43972
|
+
isDragging && "dragging"
|
|
43944
43973
|
),
|
|
43945
|
-
|
|
43946
|
-
|
|
43947
|
-
{
|
|
43948
|
-
className: "
|
|
43949
|
-
|
|
43950
|
-
|
|
43951
|
-
|
|
43952
|
-
|
|
43953
|
-
|
|
43954
|
-
|
|
43955
|
-
}
|
|
43956
|
-
|
|
43957
|
-
|
|
43958
|
-
|
|
43959
|
-
|
|
43960
|
-
|
|
43961
|
-
|
|
43962
|
-
|
|
43963
|
-
|
|
43964
|
-
|
|
43965
|
-
|
|
43974
|
+
ref: ref2,
|
|
43975
|
+
children: [
|
|
43976
|
+
img && img.src ? /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview", children: [
|
|
43977
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview__controls", children: /* @__PURE__ */ o4(Tooltip, { label: "Remove image", children: /* @__PURE__ */ o4(
|
|
43978
|
+
ActionIcon,
|
|
43979
|
+
{
|
|
43980
|
+
className: "DocEditor__ImageField__imagePreview__controls__trash",
|
|
43981
|
+
onClick: () => removeImage(),
|
|
43982
|
+
children: /* @__PURE__ */ o4(IconTrash, { size: 16 })
|
|
43983
|
+
}
|
|
43984
|
+
) }) }),
|
|
43985
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview__image", children: [
|
|
43986
|
+
/* @__PURE__ */ o4(
|
|
43987
|
+
"img",
|
|
43988
|
+
{
|
|
43989
|
+
src: img.gciUrl || img.src,
|
|
43990
|
+
width: img.width,
|
|
43991
|
+
height: img.height
|
|
43992
|
+
}
|
|
43993
|
+
),
|
|
43994
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview__dimens", children: `${img.width}x${img.height}` })
|
|
43995
|
+
] }),
|
|
43966
43996
|
/* @__PURE__ */ o4(
|
|
43967
|
-
|
|
43997
|
+
TextInput,
|
|
43968
43998
|
{
|
|
43969
|
-
|
|
43970
|
-
|
|
43971
|
-
|
|
43972
|
-
|
|
43999
|
+
className: "DocEditor__ImageField__imagePreview__image__url",
|
|
44000
|
+
size: "xs",
|
|
44001
|
+
radius: 0,
|
|
44002
|
+
value: img.gciUrl || img.src,
|
|
44003
|
+
disabled: true
|
|
43973
44004
|
}
|
|
43974
44005
|
),
|
|
43975
|
-
/* @__PURE__ */ o4(
|
|
43976
|
-
|
|
43977
|
-
|
|
43978
|
-
|
|
43979
|
-
|
|
43980
|
-
|
|
44006
|
+
/* @__PURE__ */ o4(
|
|
44007
|
+
TextInput,
|
|
44008
|
+
{
|
|
44009
|
+
className: "DocEditor__ImageField__imagePreview__image__alt",
|
|
44010
|
+
size: "xs",
|
|
44011
|
+
radius: 0,
|
|
44012
|
+
value: img.alt,
|
|
44013
|
+
label: "Alt text",
|
|
44014
|
+
onChange: (e3) => {
|
|
44015
|
+
setAltText(e3.currentTarget.value);
|
|
44016
|
+
}
|
|
44017
|
+
}
|
|
44018
|
+
)
|
|
44019
|
+
] }) : /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__noImage", children: "No image" }),
|
|
44020
|
+
/* @__PURE__ */ o4(
|
|
44021
|
+
"label",
|
|
44022
|
+
{
|
|
44023
|
+
className: "DocEditor__ImageField__uploadButton",
|
|
44024
|
+
role: "button",
|
|
44025
|
+
"aria-disabled": loading,
|
|
44026
|
+
children: [
|
|
44027
|
+
/* @__PURE__ */ o4(
|
|
44028
|
+
"input",
|
|
44029
|
+
{
|
|
44030
|
+
type: "file",
|
|
44031
|
+
accept,
|
|
44032
|
+
onChange: onFileChange,
|
|
44033
|
+
ref: inputRef
|
|
44034
|
+
}
|
|
44035
|
+
),
|
|
44036
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__uploadButton__icon", children: /* @__PURE__ */ o4(IconPhotoUp, { size: 16 }) }),
|
|
44037
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__uploadButton__label", children: loading ? "Uploading..." : "Upload image" })
|
|
44038
|
+
]
|
|
44039
|
+
}
|
|
44040
|
+
)
|
|
44041
|
+
]
|
|
44042
|
+
}
|
|
44043
|
+
);
|
|
43981
44044
|
};
|
|
43982
44045
|
DocEditor.FileField = (props) => {
|
|
43983
44046
|
const field = props.field;
|
|
43984
44047
|
const [file, setFile] = y2({});
|
|
43985
|
-
const inputRef = A2(null);
|
|
43986
44048
|
const [loading, setLoading] = y2(false);
|
|
43987
|
-
|
|
43988
|
-
|
|
43989
|
-
|
|
43990
|
-
|
|
43991
|
-
|
|
43992
|
-
|
|
43993
|
-
|
|
43994
|
-
|
|
43995
|
-
|
|
43996
|
-
|
|
44049
|
+
const [isDragging, setIsDragging] = y2(false);
|
|
44050
|
+
const inputRef = A2(null);
|
|
44051
|
+
const ref2 = A2(null);
|
|
44052
|
+
let accept = void 0;
|
|
44053
|
+
if (field.exts) {
|
|
44054
|
+
accept = field.exts.join(",");
|
|
44055
|
+
}
|
|
44056
|
+
async function removeFile() {
|
|
44057
|
+
setFile({});
|
|
44058
|
+
props.draft.removeKey(props.deepKey);
|
|
44059
|
+
}
|
|
44060
|
+
async function uploadFile(file2) {
|
|
44061
|
+
setLoading(true);
|
|
43997
44062
|
try {
|
|
43998
|
-
|
|
43999
|
-
|
|
44000
|
-
|
|
44001
|
-
const uploadedFile = files[0];
|
|
44002
|
-
const file2 = await uploadFileToGCS(uploadedFile);
|
|
44003
|
-
props.draft.updateKey(props.deepKey, file2);
|
|
44004
|
-
setFile(file2);
|
|
44063
|
+
const uploadedFile = await uploadFileToGCS(file2);
|
|
44064
|
+
props.draft.updateKey(props.deepKey, uploadedFile);
|
|
44065
|
+
setFile(uploadedFile);
|
|
44005
44066
|
setLoading(false);
|
|
44006
44067
|
} catch (err) {
|
|
44007
44068
|
console.error("file upload failed");
|
|
@@ -44019,43 +44080,109 @@ ${content}</tr>
|
|
|
44019
44080
|
inputEl.value = "";
|
|
44020
44081
|
}
|
|
44021
44082
|
}
|
|
44022
|
-
|
|
44023
|
-
|
|
44024
|
-
|
|
44083
|
+
function onFileChange(e3) {
|
|
44084
|
+
const inputEl = e3.target;
|
|
44085
|
+
const files = inputEl.files || [];
|
|
44086
|
+
const file2 = files[0];
|
|
44087
|
+
if (file2) {
|
|
44088
|
+
uploadFile(file2);
|
|
44089
|
+
}
|
|
44025
44090
|
}
|
|
44026
|
-
|
|
44027
|
-
|
|
44028
|
-
|
|
44029
|
-
|
|
44030
|
-
|
|
44031
|
-
|
|
44032
|
-
|
|
44033
|
-
|
|
44034
|
-
|
|
44091
|
+
const handleDragEnter = (e3) => {
|
|
44092
|
+
e3.preventDefault();
|
|
44093
|
+
setIsDragging(true);
|
|
44094
|
+
};
|
|
44095
|
+
const handleDragLeave = (e3) => {
|
|
44096
|
+
e3.preventDefault();
|
|
44097
|
+
setIsDragging(false);
|
|
44098
|
+
};
|
|
44099
|
+
const handleDrop = (e3) => {
|
|
44100
|
+
e3.preventDefault();
|
|
44101
|
+
setIsDragging(false);
|
|
44102
|
+
const files = e3.dataTransfer?.files || [];
|
|
44103
|
+
const file2 = files[0];
|
|
44104
|
+
if (file2) {
|
|
44105
|
+
console.log(`file dropped ("${props.deepKey}"):`, file2);
|
|
44106
|
+
uploadFile(file2);
|
|
44107
|
+
}
|
|
44108
|
+
};
|
|
44109
|
+
s2(() => {
|
|
44110
|
+
const unsubscribe = props.draft.subscribe(
|
|
44111
|
+
props.deepKey,
|
|
44112
|
+
(newValue) => {
|
|
44113
|
+
setFile(newValue);
|
|
44035
44114
|
}
|
|
44036
|
-
)
|
|
44037
|
-
|
|
44038
|
-
|
|
44039
|
-
|
|
44040
|
-
|
|
44041
|
-
|
|
44042
|
-
|
|
44043
|
-
|
|
44044
|
-
|
|
44045
|
-
|
|
44046
|
-
|
|
44047
|
-
|
|
44048
|
-
|
|
44049
|
-
|
|
44050
|
-
|
|
44051
|
-
|
|
44052
|
-
|
|
44053
|
-
/* @__PURE__ */ o4("div", { className: "DocEditor__FileField__uploadButton__icon", children: /* @__PURE__ */ o4(IconFileUpload, { size: 16 }) }),
|
|
44054
|
-
/* @__PURE__ */ o4("div", { className: "DocEditor__FileField__uploadButton__label", children: "Upload file" })
|
|
44055
|
-
]
|
|
44115
|
+
);
|
|
44116
|
+
const dropzone = ref2.current;
|
|
44117
|
+
document.addEventListener("dragenter", handleDragEnter);
|
|
44118
|
+
document.addEventListener("dragover", handleDragEnter);
|
|
44119
|
+
document.addEventListener("dragleave", handleDragLeave);
|
|
44120
|
+
document.addEventListener("drop", handleDragLeave);
|
|
44121
|
+
if (dropzone) {
|
|
44122
|
+
dropzone.addEventListener("drop", handleDrop);
|
|
44123
|
+
}
|
|
44124
|
+
return () => {
|
|
44125
|
+
unsubscribe();
|
|
44126
|
+
document.removeEventListener("dragenter", handleDragEnter);
|
|
44127
|
+
document.removeEventListener("dragover", handleDragEnter);
|
|
44128
|
+
document.removeEventListener("dragleave", handleDragLeave);
|
|
44129
|
+
document.removeEventListener("drop", handleDragLeave);
|
|
44130
|
+
if (dropzone) {
|
|
44131
|
+
dropzone.removeEventListener("drop", handleDrop);
|
|
44056
44132
|
}
|
|
44057
|
-
|
|
44058
|
-
]
|
|
44133
|
+
};
|
|
44134
|
+
}, []);
|
|
44135
|
+
return /* @__PURE__ */ o4(
|
|
44136
|
+
"div",
|
|
44137
|
+
{
|
|
44138
|
+
className: joinClassNames(
|
|
44139
|
+
"DocEditor__FileField",
|
|
44140
|
+
isDragging && "dragging"
|
|
44141
|
+
),
|
|
44142
|
+
ref: ref2,
|
|
44143
|
+
children: [
|
|
44144
|
+
file && file.src && /* @__PURE__ */ o4("div", { className: "DocEditor__FileField__controls", children: /* @__PURE__ */ o4(Tooltip, { label: "Remove file", children: /* @__PURE__ */ o4(
|
|
44145
|
+
ActionIcon,
|
|
44146
|
+
{
|
|
44147
|
+
className: "DocEditor__FileField__controls__trash",
|
|
44148
|
+
onClick: () => removeFile(),
|
|
44149
|
+
children: /* @__PURE__ */ o4(IconTrash, { size: 16 })
|
|
44150
|
+
}
|
|
44151
|
+
) }) }),
|
|
44152
|
+
file && file.src ? /* @__PURE__ */ o4("div", { className: "DocEditor__FileField__file", children: /* @__PURE__ */ o4(
|
|
44153
|
+
TextInput,
|
|
44154
|
+
{
|
|
44155
|
+
className: "DocEditor__FileField__file__url",
|
|
44156
|
+
size: "xs",
|
|
44157
|
+
radius: 0,
|
|
44158
|
+
value: file.src,
|
|
44159
|
+
disabled: true
|
|
44160
|
+
}
|
|
44161
|
+
) }) : /* @__PURE__ */ o4("div", { className: "DocEditor__FileField__noFile", children: "No file" }),
|
|
44162
|
+
/* @__PURE__ */ o4(
|
|
44163
|
+
"label",
|
|
44164
|
+
{
|
|
44165
|
+
className: "DocEditor__FileField__uploadButton",
|
|
44166
|
+
role: "button",
|
|
44167
|
+
"aria-disabled": loading,
|
|
44168
|
+
children: [
|
|
44169
|
+
/* @__PURE__ */ o4(
|
|
44170
|
+
"input",
|
|
44171
|
+
{
|
|
44172
|
+
type: "file",
|
|
44173
|
+
accept,
|
|
44174
|
+
onChange: onFileChange,
|
|
44175
|
+
ref: inputRef
|
|
44176
|
+
}
|
|
44177
|
+
),
|
|
44178
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__FileField__uploadButton__icon", children: /* @__PURE__ */ o4(IconFileUpload, { size: 16 }) }),
|
|
44179
|
+
/* @__PURE__ */ o4("div", { className: "DocEditor__FileField__uploadButton__label", children: loading ? "Uploading..." : "Upload file" })
|
|
44180
|
+
]
|
|
44181
|
+
}
|
|
44182
|
+
)
|
|
44183
|
+
]
|
|
44184
|
+
}
|
|
44185
|
+
);
|
|
44059
44186
|
};
|
|
44060
44187
|
DocEditor.ObjectField = (props) => {
|
|
44061
44188
|
const field = props.field;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blinkk/root-cms",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.58",
|
|
4
4
|
"author": "s@blinkk.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"//": "NOTE(stevenle): due to compat issues with mantine and preact, mantine is pinned to v4.2.12",
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@babel/core": "^7.17.9",
|
|
59
|
-
"@blinkk/root": "1.0.0-beta.
|
|
59
|
+
"@blinkk/root": "1.0.0-beta.58",
|
|
60
60
|
"@emotion/react": "^11.10.5",
|
|
61
61
|
"@firebase/app-compat": "^0.1.33",
|
|
62
62
|
"@firebase/app-types": "^0.7.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"vitest": "^0.18.1"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
|
-
"@blinkk/root": "1.0.0-beta.
|
|
93
|
+
"@blinkk/root": "1.0.0-beta.58",
|
|
94
94
|
"firebase-admin": ">=11",
|
|
95
95
|
"firebase-functions": ">=4",
|
|
96
96
|
"preact": "10.x",
|