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