@liiift-studio/sanity-font-manager 2.3.8 → 2.3.10
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/index.js +14 -6
- package/dist/index.mjs +12 -6
- package/package.json +1 -1
- package/src/index.js +1 -1
- package/src/schema/stylesField.js +5 -5
- package/src/utils/utils.js +8 -0
package/dist/index.js
CHANGED
|
@@ -30,6 +30,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
var index_exports = {};
|
|
31
31
|
__export(index_exports, {
|
|
32
32
|
BatchUploadFonts: () => BatchUploadFonts,
|
|
33
|
+
DISCOUNT_REQUIREMENT_TYPES: () => DISCOUNT_REQUIREMENT_TYPES,
|
|
34
|
+
DISCOUNT_REQUIREMENT_TYPES_OBJECT: () => DISCOUNT_REQUIREMENT_TYPES_OBJECT,
|
|
33
35
|
FontScriptUploaderComponent: () => FontScriptUploaderComponent,
|
|
34
36
|
GenerateCollectionsPairsComponent: () => GenerateCollectionsPairsComponent,
|
|
35
37
|
HtmlDescription: () => HtmlDescription,
|
|
@@ -2970,6 +2972,10 @@ var SCRIPTS = (process.env.SANITY_STUDIO_SCRIPTS || "").split(",").map((script)
|
|
|
2970
2972
|
var SCRIPTS_OBJECT = SCRIPTS.map((script) => {
|
|
2971
2973
|
return { title: script[0].toUpperCase() + script.slice(1), value: script };
|
|
2972
2974
|
});
|
|
2975
|
+
var DISCOUNT_REQUIREMENT_TYPES = (process.env.SANITY_STUDIO_DISCOUNT_REQ_TYPES || "").split(",").map((type) => type.trim()).filter(Boolean);
|
|
2976
|
+
var DISCOUNT_REQUIREMENT_TYPES_OBJECT = DISCOUNT_REQUIREMENT_TYPES.map((type) => {
|
|
2977
|
+
return { title: type[0].toUpperCase() + type.slice(1), value: type };
|
|
2978
|
+
});
|
|
2973
2979
|
|
|
2974
2980
|
// src/components/UploadScriptsComponent.jsx
|
|
2975
2981
|
var UploadScriptsComponent = (props) => {
|
|
@@ -6660,7 +6666,7 @@ var fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
6660
6666
|
const typefaceName = document.title;
|
|
6661
6667
|
const fonts = await client.fetch('*[_type == "font" && lower(typefaceName) == lower($typefaceName)]', { typefaceName });
|
|
6662
6668
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6663
|
-
const existingItems = parent.map((f) => f._ref).filter(Boolean);
|
|
6669
|
+
const existingItems = (parent || []).map((f) => f._ref).filter(Boolean);
|
|
6664
6670
|
return {
|
|
6665
6671
|
filter: "!(_id in $existingItems) && (_id in $relatedItemsFiltered)",
|
|
6666
6672
|
params: { existingItems, relatedItemsFiltered }
|
|
@@ -6669,7 +6675,7 @@ var fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
6669
6675
|
var variableFontsFilter = async ({ getClient, document, parent }) => {
|
|
6670
6676
|
const client = getClient({ apiVersion: "2022-11-09" });
|
|
6671
6677
|
const typefaceName = document.title;
|
|
6672
|
-
const existingItems = parent.map((f) => f._ref).filter(Boolean);
|
|
6678
|
+
const existingItems = (parent || []).map((f) => f._ref).filter(Boolean);
|
|
6673
6679
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == true]', { typefaceName });
|
|
6674
6680
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6675
6681
|
return {
|
|
@@ -6682,7 +6688,7 @@ var subfamilyPreferredStyleFilter = async ({ getClient, document, parent }) => {
|
|
|
6682
6688
|
const typefaceName = document.title;
|
|
6683
6689
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == false]', { typefaceName });
|
|
6684
6690
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6685
|
-
const existingItems = parent.fonts.map((f) => f._ref).filter(Boolean);
|
|
6691
|
+
const existingItems = (parent.fonts || []).map((f) => f._ref).filter(Boolean);
|
|
6686
6692
|
return {
|
|
6687
6693
|
filter: "(_id in $existingItems) && (_id in $relatedItemsFiltered)",
|
|
6688
6694
|
params: { existingItems, relatedItemsFiltered }
|
|
@@ -6751,7 +6757,7 @@ function createStylesField({
|
|
|
6751
6757
|
preview: {
|
|
6752
6758
|
select: { title: "title", fonts: "fonts" },
|
|
6753
6759
|
prepare({ title, fonts }) {
|
|
6754
|
-
return { title, subtitle: `${
|
|
6760
|
+
return { title, subtitle: `${(fonts || []).length} fonts` };
|
|
6755
6761
|
}
|
|
6756
6762
|
}
|
|
6757
6763
|
} : {}
|
|
@@ -6833,8 +6839,8 @@ function createStylesField({
|
|
|
6833
6839
|
name: "regenerateSubfamilies",
|
|
6834
6840
|
type: "string",
|
|
6835
6841
|
hidden: ({ parent }) => {
|
|
6836
|
-
var _a, _b
|
|
6837
|
-
return ((
|
|
6842
|
+
var _a, _b;
|
|
6843
|
+
return !((_a = parent == null ? void 0 : parent.subfamilies) == null ? void 0 : _a.length) || !((_b = parent == null ? void 0 : parent.fonts) == null ? void 0 : _b.length);
|
|
6838
6844
|
},
|
|
6839
6845
|
description: "Regenerates subfamily groups based on the fonts in this typeface.",
|
|
6840
6846
|
components: { input: RegenerateSubfamiliesComponent }
|
|
@@ -6877,6 +6883,8 @@ function createStylesField({
|
|
|
6877
6883
|
// Annotate the CommonJS export names for ESM import in node:
|
|
6878
6884
|
0 && (module.exports = {
|
|
6879
6885
|
BatchUploadFonts,
|
|
6886
|
+
DISCOUNT_REQUIREMENT_TYPES,
|
|
6887
|
+
DISCOUNT_REQUIREMENT_TYPES_OBJECT,
|
|
6880
6888
|
FontScriptUploaderComponent,
|
|
6881
6889
|
GenerateCollectionsPairsComponent,
|
|
6882
6890
|
HtmlDescription,
|
package/dist/index.mjs
CHANGED
|
@@ -2884,6 +2884,10 @@ var SCRIPTS = (process.env.SANITY_STUDIO_SCRIPTS || "").split(",").map((script)
|
|
|
2884
2884
|
var SCRIPTS_OBJECT = SCRIPTS.map((script) => {
|
|
2885
2885
|
return { title: script[0].toUpperCase() + script.slice(1), value: script };
|
|
2886
2886
|
});
|
|
2887
|
+
var DISCOUNT_REQUIREMENT_TYPES = (process.env.SANITY_STUDIO_DISCOUNT_REQ_TYPES || "").split(",").map((type) => type.trim()).filter(Boolean);
|
|
2888
|
+
var DISCOUNT_REQUIREMENT_TYPES_OBJECT = DISCOUNT_REQUIREMENT_TYPES.map((type) => {
|
|
2889
|
+
return { title: type[0].toUpperCase() + type.slice(1), value: type };
|
|
2890
|
+
});
|
|
2887
2891
|
|
|
2888
2892
|
// src/components/UploadScriptsComponent.jsx
|
|
2889
2893
|
var UploadScriptsComponent = (props) => {
|
|
@@ -6574,7 +6578,7 @@ var fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
6574
6578
|
const typefaceName = document.title;
|
|
6575
6579
|
const fonts = await client.fetch('*[_type == "font" && lower(typefaceName) == lower($typefaceName)]', { typefaceName });
|
|
6576
6580
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6577
|
-
const existingItems = parent.map((f) => f._ref).filter(Boolean);
|
|
6581
|
+
const existingItems = (parent || []).map((f) => f._ref).filter(Boolean);
|
|
6578
6582
|
return {
|
|
6579
6583
|
filter: "!(_id in $existingItems) && (_id in $relatedItemsFiltered)",
|
|
6580
6584
|
params: { existingItems, relatedItemsFiltered }
|
|
@@ -6583,7 +6587,7 @@ var fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
6583
6587
|
var variableFontsFilter = async ({ getClient, document, parent }) => {
|
|
6584
6588
|
const client = getClient({ apiVersion: "2022-11-09" });
|
|
6585
6589
|
const typefaceName = document.title;
|
|
6586
|
-
const existingItems = parent.map((f) => f._ref).filter(Boolean);
|
|
6590
|
+
const existingItems = (parent || []).map((f) => f._ref).filter(Boolean);
|
|
6587
6591
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == true]', { typefaceName });
|
|
6588
6592
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6589
6593
|
return {
|
|
@@ -6596,7 +6600,7 @@ var subfamilyPreferredStyleFilter = async ({ getClient, document, parent }) => {
|
|
|
6596
6600
|
const typefaceName = document.title;
|
|
6597
6601
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == false]', { typefaceName });
|
|
6598
6602
|
const relatedItemsFiltered = fonts.map((f) => f._id).filter(Boolean);
|
|
6599
|
-
const existingItems = parent.fonts.map((f) => f._ref).filter(Boolean);
|
|
6603
|
+
const existingItems = (parent.fonts || []).map((f) => f._ref).filter(Boolean);
|
|
6600
6604
|
return {
|
|
6601
6605
|
filter: "(_id in $existingItems) && (_id in $relatedItemsFiltered)",
|
|
6602
6606
|
params: { existingItems, relatedItemsFiltered }
|
|
@@ -6665,7 +6669,7 @@ function createStylesField({
|
|
|
6665
6669
|
preview: {
|
|
6666
6670
|
select: { title: "title", fonts: "fonts" },
|
|
6667
6671
|
prepare({ title, fonts }) {
|
|
6668
|
-
return { title, subtitle: `${
|
|
6672
|
+
return { title, subtitle: `${(fonts || []).length} fonts` };
|
|
6669
6673
|
}
|
|
6670
6674
|
}
|
|
6671
6675
|
} : {}
|
|
@@ -6747,8 +6751,8 @@ function createStylesField({
|
|
|
6747
6751
|
name: "regenerateSubfamilies",
|
|
6748
6752
|
type: "string",
|
|
6749
6753
|
hidden: ({ parent }) => {
|
|
6750
|
-
var _a, _b
|
|
6751
|
-
return ((
|
|
6754
|
+
var _a, _b;
|
|
6755
|
+
return !((_a = parent == null ? void 0 : parent.subfamilies) == null ? void 0 : _a.length) || !((_b = parent == null ? void 0 : parent.fonts) == null ? void 0 : _b.length);
|
|
6752
6756
|
},
|
|
6753
6757
|
description: "Regenerates subfamily groups based on the fonts in this typeface.",
|
|
6754
6758
|
components: { input: RegenerateSubfamiliesComponent }
|
|
@@ -6790,6 +6794,8 @@ function createStylesField({
|
|
|
6790
6794
|
}
|
|
6791
6795
|
export {
|
|
6792
6796
|
BatchUploadFonts,
|
|
6797
|
+
DISCOUNT_REQUIREMENT_TYPES,
|
|
6798
|
+
DISCOUNT_REQUIREMENT_TYPES_OBJECT,
|
|
6793
6799
|
FontScriptUploaderComponent,
|
|
6794
6800
|
GenerateCollectionsPairsComponent,
|
|
6795
6801
|
HtmlDescription,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liiift-studio/sanity-font-manager",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.10",
|
|
4
4
|
"description": "Sanity Studio plugin — full font management suite with batch upload, format conversion, metadata extraction, CSS generation, collection/pair generation, and script variant support. Supports Sanity v3, v4, and v5.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Liiift Studio",
|
package/src/index.js
CHANGED
|
@@ -28,7 +28,7 @@ export { default as generateFontFile } from './utils/generateFontFile.js';
|
|
|
28
28
|
export { default as generateSubset } from './utils/generateSubset.js';
|
|
29
29
|
export { default as parseVariableFontInstances } from './utils/parseVariableFontInstances.js';
|
|
30
30
|
export { getEmptyFontKit } from './utils/getEmptyFontKit.js';
|
|
31
|
-
export { SCRIPTS, SCRIPTS_OBJECT, HtmlDescription } from './utils/utils.js';
|
|
31
|
+
export { SCRIPTS, SCRIPTS_OBJECT, HtmlDescription, DISCOUNT_REQUIREMENT_TYPES, DISCOUNT_REQUIREMENT_TYPES_OBJECT } from './utils/utils.js';
|
|
32
32
|
|
|
33
33
|
// Font processing utilities
|
|
34
34
|
export {
|
|
@@ -11,7 +11,7 @@ const fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
11
11
|
const typefaceName = document.title;
|
|
12
12
|
const fonts = await client.fetch('*[_type == "font" && lower(typefaceName) == lower($typefaceName)]', { typefaceName });
|
|
13
13
|
const relatedItemsFiltered = fonts.map(f => f._id).filter(Boolean);
|
|
14
|
-
const existingItems = parent.map(f => f._ref).filter(Boolean);
|
|
14
|
+
const existingItems = (parent || []).map(f => f._ref).filter(Boolean);
|
|
15
15
|
return {
|
|
16
16
|
filter: '!(_id in $existingItems) && (_id in $relatedItemsFiltered)',
|
|
17
17
|
params: { existingItems, relatedItemsFiltered },
|
|
@@ -22,7 +22,7 @@ const fontsFilter = async ({ getClient, document, parent }) => {
|
|
|
22
22
|
const variableFontsFilter = async ({ getClient, document, parent }) => {
|
|
23
23
|
const client = getClient({ apiVersion: '2022-11-09' });
|
|
24
24
|
const typefaceName = document.title;
|
|
25
|
-
const existingItems = parent.map(f => f._ref).filter(Boolean);
|
|
25
|
+
const existingItems = (parent || []).map(f => f._ref).filter(Boolean);
|
|
26
26
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == true]', { typefaceName });
|
|
27
27
|
const relatedItemsFiltered = fonts.map(f => f._id).filter(Boolean);
|
|
28
28
|
return {
|
|
@@ -37,7 +37,7 @@ const subfamilyPreferredStyleFilter = async ({ getClient, document, parent }) =>
|
|
|
37
37
|
const typefaceName = document.title;
|
|
38
38
|
const fonts = await client.fetch('*[_type == "font" && typefaceName == $typefaceName && variableFont == false]', { typefaceName });
|
|
39
39
|
const relatedItemsFiltered = fonts.map(f => f._id).filter(Boolean);
|
|
40
|
-
const existingItems = parent.fonts.map(f => f._ref).filter(Boolean);
|
|
40
|
+
const existingItems = (parent.fonts || []).map(f => f._ref).filter(Boolean);
|
|
41
41
|
return {
|
|
42
42
|
filter: '(_id in $existingItems) && (_id in $relatedItemsFiltered)',
|
|
43
43
|
params: { existingItems, relatedItemsFiltered },
|
|
@@ -126,7 +126,7 @@ export function createStylesField({
|
|
|
126
126
|
preview: {
|
|
127
127
|
select: { title: 'title', fonts: 'fonts' },
|
|
128
128
|
prepare({ title, fonts }) {
|
|
129
|
-
return { title, subtitle: `${
|
|
129
|
+
return { title, subtitle: `${(fonts || []).length} fonts` };
|
|
130
130
|
},
|
|
131
131
|
},
|
|
132
132
|
} : {}),
|
|
@@ -208,7 +208,7 @@ export function createStylesField({
|
|
|
208
208
|
title: 'Regenerate Subfamilies',
|
|
209
209
|
name: 'regenerateSubfamilies',
|
|
210
210
|
type: 'string',
|
|
211
|
-
hidden: ({ parent }) => parent?.
|
|
211
|
+
hidden: ({ parent }) => !parent?.subfamilies?.length || !parent?.fonts?.length,
|
|
212
212
|
description: 'Regenerates subfamily groups based on the fonts in this typeface.',
|
|
213
213
|
components: { input: RegenerateSubfamiliesComponent },
|
|
214
214
|
}),
|
package/src/utils/utils.js
CHANGED
|
@@ -14,3 +14,11 @@ export const SCRIPTS = (process.env.SANITY_STUDIO_SCRIPTS || '').split(',').map(
|
|
|
14
14
|
export const SCRIPTS_OBJECT = SCRIPTS.map((script) => {
|
|
15
15
|
return {title: script[0].toUpperCase() + script.slice(1), value: script}
|
|
16
16
|
});
|
|
17
|
+
|
|
18
|
+
/** Discount requirement types — comma-separated SANITY_STUDIO_DISCOUNT_REQ_TYPES env var */
|
|
19
|
+
export const DISCOUNT_REQUIREMENT_TYPES = (process.env.SANITY_STUDIO_DISCOUNT_REQ_TYPES || '').split(',').map((type) => type.trim()).filter(Boolean);
|
|
20
|
+
|
|
21
|
+
/** DISCOUNT_REQUIREMENT_TYPES as Sanity select option objects */
|
|
22
|
+
export const DISCOUNT_REQUIREMENT_TYPES_OBJECT = DISCOUNT_REQUIREMENT_TYPES.map((type) => {
|
|
23
|
+
return {title: type[0].toUpperCase() + type.slice(1), value: type}
|
|
24
|
+
});
|