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