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