@plasmicpkgs/plasmic-sanity-io 1.0.92 → 1.0.94
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/plasmic-sanity-io.cjs.development.js +150 -139
- package/dist/plasmic-sanity-io.cjs.development.js.map +1 -1
- package/dist/plasmic-sanity-io.cjs.production.min.js +1 -1
- package/dist/plasmic-sanity-io.cjs.production.min.js.map +1 -1
- package/dist/plasmic-sanity-io.esm.js +150 -139
- package/dist/plasmic-sanity-io.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -830,7 +830,12 @@ var sanityFetcherMeta = {
|
|
|
830
830
|
type: "string",
|
|
831
831
|
displayName: "GROQ",
|
|
832
832
|
description: "Query in GROQ.",
|
|
833
|
-
defaultValueHint: "*[_type == 'movie']"
|
|
833
|
+
defaultValueHint: "*[_type == 'movie']",
|
|
834
|
+
// Hide this if there's no groq, AND there's docType, so we're in
|
|
835
|
+
// "docType" mode
|
|
836
|
+
hidden: function hidden(props) {
|
|
837
|
+
return !props.groq && !!props.docType;
|
|
838
|
+
}
|
|
834
839
|
},
|
|
835
840
|
docType: {
|
|
836
841
|
type: "choice",
|
|
@@ -839,7 +844,11 @@ var sanityFetcherMeta = {
|
|
|
839
844
|
return (_ctx$docTypes = ctx == null ? void 0 : ctx.docTypes) != null ? _ctx$docTypes : [];
|
|
840
845
|
},
|
|
841
846
|
displayName: "Document type",
|
|
842
|
-
description: "Document type to be queried (*[_type == DOC_TYPE] shortcut)."
|
|
847
|
+
description: "Document type to be queried (*[_type == DOC_TYPE] shortcut).",
|
|
848
|
+
// Hide this if groq is specified, as groq always takes precedence
|
|
849
|
+
hidden: function hidden(props) {
|
|
850
|
+
return !!props.groq;
|
|
851
|
+
}
|
|
843
852
|
},
|
|
844
853
|
filterField: {
|
|
845
854
|
type: "choice",
|
|
@@ -849,34 +858,42 @@ var sanityFetcherMeta = {
|
|
|
849
858
|
var _ctx$sanityFields;
|
|
850
859
|
return (_ctx$sanityFields = ctx == null ? void 0 : ctx.sanityFields) != null ? _ctx$sanityFields : [];
|
|
851
860
|
},
|
|
861
|
+
// Hide this if there's groq (so we're just using groq), or if there's
|
|
862
|
+
// no docType selected yet
|
|
852
863
|
hidden: function hidden(props, ctx) {
|
|
853
|
-
return
|
|
864
|
+
return !!props.groq || !props.docType;
|
|
854
865
|
}
|
|
855
866
|
},
|
|
856
867
|
filterParameter: {
|
|
857
868
|
type: "choice",
|
|
858
|
-
displayName: "Filter
|
|
859
|
-
description: "Filter
|
|
869
|
+
displayName: "Filter Operation",
|
|
870
|
+
description: "Filter Option to filter by. Read more (https://www.sanity.io/docs/groq-operators#3b7211e976f6)",
|
|
860
871
|
options: function options(props, ctx) {
|
|
861
872
|
var _ctx$queryOptions;
|
|
862
873
|
return (_ctx$queryOptions = ctx == null ? void 0 : ctx.queryOptions) != null ? _ctx$queryOptions : [];
|
|
863
874
|
},
|
|
875
|
+
// Hide if in groq mode, or if no filter field is selected yet
|
|
864
876
|
hidden: function hidden(props, ctx) {
|
|
865
|
-
return !props.filterField;
|
|
877
|
+
return !!props.groq || !props.filterField;
|
|
866
878
|
}
|
|
867
879
|
},
|
|
868
880
|
filterValue: {
|
|
869
881
|
type: "string",
|
|
870
882
|
displayName: "Filter value",
|
|
871
883
|
description: "Value to filter by, should be of filter field type",
|
|
884
|
+
// Hide if in groq mode, or if no filter field is selected yet
|
|
872
885
|
hidden: function hidden(props, ctx) {
|
|
873
|
-
return !props.
|
|
886
|
+
return !!props.groq || !props.filterField;
|
|
874
887
|
}
|
|
875
888
|
},
|
|
876
889
|
limit: {
|
|
877
890
|
type: "string",
|
|
878
891
|
displayName: "Limit",
|
|
879
|
-
description: "Limit"
|
|
892
|
+
description: "Limit",
|
|
893
|
+
// Hide if in groq mode
|
|
894
|
+
hidden: function hidden(props) {
|
|
895
|
+
return !!props.groq || !props.docType;
|
|
896
|
+
}
|
|
880
897
|
},
|
|
881
898
|
noAutoRepeat: {
|
|
882
899
|
type: "boolean",
|
|
@@ -910,14 +927,20 @@ function SanityFetcher(_ref2) {
|
|
|
910
927
|
var dateRegex = new RegExp(/^\d{4}-\d{2}-\d{2}$/);
|
|
911
928
|
var creds = ensure(useContext(CredentialsContext));
|
|
912
929
|
if (!creds.projectId || !projectIdRegex.test(creds.projectId)) {
|
|
913
|
-
return React.createElement("div",
|
|
930
|
+
return React.createElement("div", {
|
|
931
|
+
className: className
|
|
932
|
+
}, "Please specify a valid projectId, it can only contain only a-z, 0-9 and dashes.");
|
|
914
933
|
} else if (!creds.dataset || !datasetRegex.test(creds.dataset)) {
|
|
915
|
-
return React.createElement("div",
|
|
934
|
+
return React.createElement("div", {
|
|
935
|
+
className: className
|
|
936
|
+
}, "Please specify a valid dataset, they can only contain lowercase characters, numbers, underscores and dashes, and start with tilde, and be maximum 64 characters.");
|
|
916
937
|
} else if (creds.apiVersion) {
|
|
917
938
|
if (creds.apiVersion !== "v1" && creds.apiVersion !== "1" && creds.apiVersion !== "X") {
|
|
918
939
|
var date = new Date(creds.apiVersion);
|
|
919
940
|
if (!(dateRegex.test(creds.apiVersion) && date instanceof Date && date.getTime() > 0)) {
|
|
920
|
-
return React.createElement("div",
|
|
941
|
+
return React.createElement("div", {
|
|
942
|
+
className: className
|
|
943
|
+
}, "Please specify a valid API version, expected `v1`, `1` or date in format `YYYY-MM-DD`.");
|
|
921
944
|
}
|
|
922
945
|
}
|
|
923
946
|
}
|
|
@@ -951,92 +974,88 @@ function SanityFetcher(_ref2) {
|
|
|
951
974
|
}, _callee);
|
|
952
975
|
})));
|
|
953
976
|
var docTypes = (_allDataTypes$data = allDataTypes.data) != null ? _allDataTypes$data : false;
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
977
|
+
var hasFilter = !!docType && !!filterField && !!filterParameter && !!filterValue;
|
|
978
|
+
var generateUnfilteredGroq = function generateUnfilteredGroq() {
|
|
979
|
+
if (groq) {
|
|
980
|
+
console.log("ORIG GROQ", groq);
|
|
981
|
+
return groq;
|
|
982
|
+
} else if (docType) {
|
|
983
|
+
var query = "*[_type=='" + docType + "']";
|
|
984
|
+
if (hasFilter) {
|
|
985
|
+
// Ask for only a small sample, so we know how to generate the filter
|
|
986
|
+
query += "[0...10]";
|
|
987
|
+
} else if (limit) {
|
|
988
|
+
query += "[0..." + limit + "]";
|
|
989
|
+
}
|
|
990
|
+
console.log("UNFILTERED GROQ", query);
|
|
991
|
+
return query;
|
|
992
|
+
} else {
|
|
993
|
+
return null;
|
|
994
|
+
}
|
|
995
|
+
};
|
|
996
|
+
var unfilteredQuery = generateUnfilteredGroq();
|
|
966
997
|
var sanity = makeSanityClient(creds);
|
|
967
|
-
var _usePlasmicQueryData = usePlasmicQueryData(
|
|
968
|
-
|
|
998
|
+
var _usePlasmicQueryData = usePlasmicQueryData(unfilteredQuery ? JSON.stringify({
|
|
999
|
+
fullQuery: unfilteredQuery,
|
|
1000
|
+
creds: creds
|
|
1001
|
+
}) : null, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
|
|
969
1002
|
return runtime_1.wrap(function _callee2$(_context2) {
|
|
970
1003
|
while (1) {
|
|
971
1004
|
switch (_context2.prev = _context2.next) {
|
|
972
1005
|
case 0:
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
break;
|
|
976
|
-
}
|
|
977
|
-
return _context2.abrupt("return", null);
|
|
978
|
-
case 2:
|
|
979
|
-
if (limit) {
|
|
980
|
-
query = groq + "][" + limit + "]";
|
|
981
|
-
} else {
|
|
982
|
-
query = groq + "]";
|
|
983
|
-
}
|
|
984
|
-
_context2.next = 5;
|
|
985
|
-
return sanity.fetch(query);
|
|
986
|
-
case 5:
|
|
987
|
-
resp = _context2.sent;
|
|
988
|
-
return _context2.abrupt("return", resp);
|
|
989
|
-
case 7:
|
|
1006
|
+
return _context2.abrupt("return", sanity.fetch(unfilteredQuery));
|
|
1007
|
+
case 1:
|
|
990
1008
|
case "end":
|
|
991
1009
|
return _context2.stop();
|
|
992
1010
|
}
|
|
993
1011
|
}
|
|
994
1012
|
}, _callee2);
|
|
995
1013
|
}))),
|
|
996
|
-
|
|
997
|
-
var
|
|
998
|
-
|
|
1014
|
+
unfilteredData = _usePlasmicQueryData.data;
|
|
1015
|
+
var generateFilteredQuery = function generateFilteredQuery() {
|
|
1016
|
+
if (!hasFilter || !unfilteredData) {
|
|
1017
|
+
return null;
|
|
1018
|
+
}
|
|
1019
|
+
var fieldValues = Object.values(unfilteredData).flatMap(function (model) {
|
|
1020
|
+
return Array.isArray(model) ? model : [model];
|
|
1021
|
+
}).map(function (item) {
|
|
1022
|
+
var field = Object.entries(item).find(function (el) {
|
|
1023
|
+
return el[0] === filterField;
|
|
1024
|
+
});
|
|
1025
|
+
return field == null ? void 0 : field[1];
|
|
1026
|
+
});
|
|
1027
|
+
var query = "*[_type=='" + docType + "'";
|
|
1028
|
+
if (fieldValues.some(function (v) {
|
|
1029
|
+
return typeof v === "string";
|
|
1030
|
+
})) {
|
|
1031
|
+
query = query + " && " + filterField + " " + filterParameter + " \"" + filterValue + "\"";
|
|
1032
|
+
} else {
|
|
1033
|
+
query = query + " && " + filterField + " " + filterParameter + " " + filterValue;
|
|
1034
|
+
}
|
|
1035
|
+
if (limit) {
|
|
1036
|
+
query = query + "][0..." + limit + "]";
|
|
1037
|
+
} else {
|
|
1038
|
+
query = query + "]";
|
|
1039
|
+
}
|
|
1040
|
+
console.log("FILTERED GROQ", query);
|
|
1041
|
+
return query;
|
|
1042
|
+
};
|
|
1043
|
+
var filteredQuery = generateFilteredQuery();
|
|
1044
|
+
var _usePlasmicQueryData2 = usePlasmicQueryData(filteredQuery ? JSON.stringify({
|
|
1045
|
+
filteredQuery: filteredQuery,
|
|
1046
|
+
creds: creds
|
|
1047
|
+
}) : null, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3() {
|
|
1048
|
+
var resp;
|
|
999
1049
|
return runtime_1.wrap(function _callee3$(_context3) {
|
|
1000
1050
|
while (1) {
|
|
1001
1051
|
switch (_context3.prev = _context3.next) {
|
|
1002
1052
|
case 0:
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
break;
|
|
1006
|
-
}
|
|
1007
|
-
return _context3.abrupt("return", null);
|
|
1053
|
+
_context3.next = 2;
|
|
1054
|
+
return sanity.fetch(filteredQuery);
|
|
1008
1055
|
case 2:
|
|
1009
|
-
if (response) {
|
|
1010
|
-
_context3.next = 4;
|
|
1011
|
-
break;
|
|
1012
|
-
}
|
|
1013
|
-
return _context3.abrupt("return", null);
|
|
1014
|
-
case 4:
|
|
1015
|
-
matched = Object.values(response).flatMap(function (model) {
|
|
1016
|
-
return Array.isArray(model) ? model : [model];
|
|
1017
|
-
}).map(function (item) {
|
|
1018
|
-
var fields = Object.entries(item).find(function (el) {
|
|
1019
|
-
return el[0] === filterField;
|
|
1020
|
-
});
|
|
1021
|
-
return fields;
|
|
1022
|
-
});
|
|
1023
|
-
Object.values(matched).map(function (model) {
|
|
1024
|
-
return Array.isArray(model) ? model : [model];
|
|
1025
|
-
}).map(function (item) {
|
|
1026
|
-
if (typeof item[1] === "number" && typeof item[1] !== "object") {
|
|
1027
|
-
query = groq + " && " + filterField + " " + filterParameter + " " + filterValue + "]";
|
|
1028
|
-
} else if (typeof item[1] !== "number" && typeof item[1] !== "object" && typeof item[1] === "string") {
|
|
1029
|
-
query = groq + " && " + filterField + " " + filterParameter + " \"" + filterValue + "\"]";
|
|
1030
|
-
} else {
|
|
1031
|
-
query = groq + " && " + filterField + " " + filterParameter + " " + filterValue + "]";
|
|
1032
|
-
}
|
|
1033
|
-
});
|
|
1034
|
-
_context3.next = 8;
|
|
1035
|
-
return sanity.fetch(query);
|
|
1036
|
-
case 8:
|
|
1037
1056
|
resp = _context3.sent;
|
|
1038
1057
|
return _context3.abrupt("return", resp);
|
|
1039
|
-
case
|
|
1058
|
+
case 4:
|
|
1040
1059
|
case "end":
|
|
1041
1060
|
return _context3.stop();
|
|
1042
1061
|
}
|
|
@@ -1045,15 +1064,24 @@ function SanityFetcher(_ref2) {
|
|
|
1045
1064
|
}))),
|
|
1046
1065
|
filteredData = _usePlasmicQueryData2.data;
|
|
1047
1066
|
if (!docTypes) {
|
|
1048
|
-
return React.createElement("div",
|
|
1067
|
+
return React.createElement("div", {
|
|
1068
|
+
className: className
|
|
1069
|
+
}, "Please configure the Sanity provider with a valid projectId, dataset, and token (if necessary). Don't forget to add 'https://host.plasmicdev.com' as an authorized host on the CORS origins section of your project.");
|
|
1049
1070
|
}
|
|
1050
1071
|
setControlContextData == null ? void 0 : setControlContextData({
|
|
1051
1072
|
docTypes: docTypes
|
|
1052
1073
|
});
|
|
1053
|
-
if (!
|
|
1054
|
-
return React.createElement("div",
|
|
1074
|
+
if (!groq && !docType) {
|
|
1075
|
+
return React.createElement("div", {
|
|
1076
|
+
className: className
|
|
1077
|
+
}, "Please specify a valid GROQ query or select a Document type.");
|
|
1055
1078
|
}
|
|
1056
|
-
|
|
1079
|
+
if (!unfilteredData) {
|
|
1080
|
+
return React.createElement("div", {
|
|
1081
|
+
className: className
|
|
1082
|
+
}, "Loading...");
|
|
1083
|
+
}
|
|
1084
|
+
var sanityFields = unfilteredData.map(function (item) {
|
|
1057
1085
|
var fields = Object.keys(item).filter(function (field) {
|
|
1058
1086
|
var value = get(item, field);
|
|
1059
1087
|
return typeof value !== "object" && value._type !== "image" && typeof value === "number" || typeof value === "string" && !value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/);
|
|
@@ -1061,7 +1089,7 @@ function SanityFetcher(_ref2) {
|
|
|
1061
1089
|
return fields;
|
|
1062
1090
|
});
|
|
1063
1091
|
var operators;
|
|
1064
|
-
var matchedFields = Object.values(
|
|
1092
|
+
var matchedFields = Object.values(unfilteredData).flatMap(function (model) {
|
|
1065
1093
|
return Array.isArray(model) ? model : [model];
|
|
1066
1094
|
}).map(function (item) {
|
|
1067
1095
|
var fields = Object.entries(item).find(function (el) {
|
|
@@ -1077,10 +1105,10 @@ function SanityFetcher(_ref2) {
|
|
|
1077
1105
|
} else if (typeof item[1] !== "number" && typeof item[1] !== "object" && typeof item[1] === "string") {
|
|
1078
1106
|
operators = [{
|
|
1079
1107
|
value: "==",
|
|
1080
|
-
label: "
|
|
1108
|
+
label: "Equals"
|
|
1081
1109
|
}, {
|
|
1082
1110
|
value: "!=",
|
|
1083
|
-
label: "
|
|
1111
|
+
label: "Not equals"
|
|
1084
1112
|
}];
|
|
1085
1113
|
}
|
|
1086
1114
|
});
|
|
@@ -1089,65 +1117,48 @@ function SanityFetcher(_ref2) {
|
|
|
1089
1117
|
docTypes: docTypes,
|
|
1090
1118
|
sanityFields: sanityFields[0]
|
|
1091
1119
|
});
|
|
1092
|
-
if (
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1120
|
+
if (hasFilter) {
|
|
1121
|
+
if (!filterParameter) {
|
|
1122
|
+
return React.createElement("div", {
|
|
1123
|
+
className: className
|
|
1124
|
+
}, "Please specify a filter operation");
|
|
1125
|
+
}
|
|
1126
|
+
if (!filterValue) {
|
|
1127
|
+
return React.createElement("div", {
|
|
1128
|
+
className: className
|
|
1129
|
+
}, "Please specify a filter value");
|
|
1130
|
+
}
|
|
1100
1131
|
}
|
|
1101
|
-
if (
|
|
1102
|
-
return React.createElement("div",
|
|
1132
|
+
if (hasFilter && !filteredData) {
|
|
1133
|
+
return React.createElement("div", {
|
|
1134
|
+
className: className
|
|
1135
|
+
}, "Loading...");
|
|
1103
1136
|
}
|
|
1104
|
-
var
|
|
1137
|
+
var resultData = hasFilter ? filteredData : unfilteredData;
|
|
1105
1138
|
var imageBuilder = imageUrlBuilder(sanity);
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
Object.keys(item).forEach(function (field) {
|
|
1112
|
-
if (item[field]._type === "image") {
|
|
1113
|
-
item[field].imgUrl = imageBuilder.image(item[field]).ignoreImageParams().toString();
|
|
1114
|
-
}
|
|
1115
|
-
});
|
|
1116
|
-
return React.createElement(DataProvider, {
|
|
1117
|
-
key: item._id,
|
|
1118
|
-
name: "sanityItem",
|
|
1119
|
-
data: item,
|
|
1120
|
-
hidden: true
|
|
1121
|
-
}, React.createElement(DataProvider, {
|
|
1122
|
-
name: makeDataProviderName(docType),
|
|
1123
|
-
data: item
|
|
1124
|
-
}, repeatedElement(index, children)));
|
|
1125
|
-
});
|
|
1126
|
-
} else {
|
|
1127
|
-
repElements = noAutoRepeat ? children : response.map(function (item, index) {
|
|
1128
|
-
Object.keys(item).forEach(function (field) {
|
|
1129
|
-
if (item[field]._type === "image") {
|
|
1130
|
-
item[field].imgUrl = imageBuilder.image(item[field]).ignoreImageParams().toString();
|
|
1131
|
-
}
|
|
1132
|
-
});
|
|
1133
|
-
return docType ? React.createElement(DataProvider, {
|
|
1134
|
-
key: item._id,
|
|
1135
|
-
name: "sanityItem",
|
|
1136
|
-
data: item,
|
|
1137
|
-
hidden: true
|
|
1138
|
-
}, React.createElement(DataProvider, {
|
|
1139
|
-
name: makeDataProviderName(docType),
|
|
1140
|
-
data: item
|
|
1141
|
-
}, repeatedElement(index, children))) : React.createElement(DataProvider, {
|
|
1142
|
-
key: item._id,
|
|
1143
|
-
name: "sanityItem",
|
|
1144
|
-
data: item
|
|
1145
|
-
}, repeatedElement(index, children));
|
|
1139
|
+
var repElements = noAutoRepeat ? children : resultData.map(function (item, index) {
|
|
1140
|
+
Object.keys(item).forEach(function (field) {
|
|
1141
|
+
if (item[field]._type === "image") {
|
|
1142
|
+
item[field].imgUrl = imageBuilder.image(item[field]).ignoreImageParams().toString();
|
|
1143
|
+
}
|
|
1146
1144
|
});
|
|
1147
|
-
|
|
1145
|
+
return docType ? React.createElement(DataProvider, {
|
|
1146
|
+
key: item._id,
|
|
1147
|
+
name: "sanityItem",
|
|
1148
|
+
data: item,
|
|
1149
|
+
hidden: true
|
|
1150
|
+
}, React.createElement(DataProvider, {
|
|
1151
|
+
name: makeDataProviderName(docType),
|
|
1152
|
+
data: item
|
|
1153
|
+
}, repeatedElement(index, children))) : React.createElement(DataProvider, {
|
|
1154
|
+
key: item._id,
|
|
1155
|
+
name: "sanityItem",
|
|
1156
|
+
data: item
|
|
1157
|
+
}, repeatedElement(index, children));
|
|
1158
|
+
});
|
|
1148
1159
|
return React.createElement(DataProvider, {
|
|
1149
1160
|
name: "sanityItems",
|
|
1150
|
-
data:
|
|
1161
|
+
data: resultData
|
|
1151
1162
|
}, noLayout ? React.createElement(React.Fragment, null, " ", repElements, " ") : React.createElement("div", {
|
|
1152
1163
|
className: className
|
|
1153
1164
|
}, " ", repElements, " "));
|