@liiift-studio/sanity-font-manager 2.3.19 → 2.5.0
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/README.md +437 -437
- package/dist/UploadModal-6LIX7XOK.js +6 -0
- package/dist/UploadModal-NME2W53V.mjs +6 -0
- package/dist/chunk-646WCBRR.mjs +7276 -0
- package/dist/chunk-FH4QKHOH.js +7276 -0
- package/dist/index.js +747 -1675
- package/dist/index.mjs +400 -1237
- package/package.json +85 -85
- package/src/components/BatchUploadFonts.jsx +653 -639
- package/src/components/BulkActions.jsx +99 -0
- package/src/components/ExistingDocumentResolver.jsx +152 -0
- package/src/components/FontReviewCard.jsx +415 -0
- package/src/components/FontScriptUploaderComponent.jsx +463 -463
- package/src/components/GenerateCollectionsPairsComponent.jsx +259 -259
- package/src/components/KeyValueInput.jsx +95 -95
- package/src/components/KeyValueReferenceInput.jsx +254 -254
- package/src/components/NestedObjectArraySelector.jsx +146 -146
- package/src/components/PriceInput.jsx +26 -26
- package/src/components/PrimaryCollectionGeneratorTypeface.jsx +116 -116
- package/src/components/RegenerateSubfamiliesComponent.jsx +185 -185
- package/src/components/SetOTF.jsx +87 -87
- package/src/components/SingleUploaderTool.jsx +672 -673
- package/src/components/StatusDisplay.jsx +26 -26
- package/src/components/StyleCountInput.jsx +16 -16
- package/src/components/UpdateScriptsComponent.jsx +76 -76
- package/src/components/UploadButton.jsx +43 -43
- package/src/components/UploadModal.jsx +268 -0
- package/src/components/UploadScriptsComponent.jsx +539 -537
- package/src/components/UploadStep1Settings.jsx +272 -0
- package/src/components/UploadStep2Review.jsx +472 -0
- package/src/components/UploadStep3Execute.jsx +234 -0
- package/src/components/UploadSummary.jsx +196 -0
- package/src/components/VariableInstanceReferencesInput.jsx +190 -190
- package/src/hooks/useNestedObjects.js +92 -92
- package/src/hooks/useSanityClient.js +9 -9
- package/src/index.js +115 -70
- package/src/schema/openTypeField.js +1945 -1945
- package/src/schema/styleCountField.js +12 -12
- package/src/schema/stylesField.js +268 -268
- package/src/schema/stylisticSetField.js +301 -301
- package/src/utils/buildUploadPlan.js +325 -0
- package/src/utils/executeUploadPlan.js +437 -0
- package/src/utils/executionReducer.js +56 -0
- package/src/utils/fontHelpers.js +267 -0
- package/src/utils/generateCssFile.js +207 -205
- package/src/utils/generateFontData.js +98 -145
- package/src/utils/generateFontFile.js +38 -38
- package/src/utils/generateKeywords.js +185 -185
- package/src/utils/generateSubset.js +45 -45
- package/src/utils/getEmptyFontKit.js +101 -99
- package/src/utils/parseFont.js +55 -0
- package/src/utils/parseVariableFontInstances.js +211 -211
- package/src/utils/planReducer.js +517 -0
- package/src/utils/planTypes.js +183 -0
- package/src/utils/processFontFiles.js +529 -477
- package/src/utils/regenerateFontData.js +146 -146
- package/src/utils/resolveExistingFont.js +87 -0
- package/src/utils/sanitizeForSanityId.js +65 -65
- package/src/utils/updateFontPrices.js +94 -94
- package/src/utils/updateTypefaceDocument.js +149 -160
- package/src/utils/uploadFontFiles.js +405 -316
- package/src/utils/utils.js +24 -24
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
// Ordered key-value string pair editor for Sanity Studio — add, remove, and reorder rows
|
|
2
|
-
|
|
3
|
-
import React, { useState, useCallback } from 'react';
|
|
4
|
-
import { Button, Grid, Stack, TextInput } from '@sanity/ui';
|
|
5
|
-
import { AddIcon, ArrowDownIcon, ArrowUpIcon, TrashIcon } from '@sanity/icons';
|
|
6
|
-
import { set } from 'sanity';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Ordered key-value string pair editor with add, remove, and reorder controls.
|
|
10
|
-
* Writes an array of { _key, key, value } objects to Sanity.
|
|
11
|
-
* @param {Array} value - Current array of { _key, key, value } pairs
|
|
12
|
-
* @param {Function} onChange - Sanity onChange callback
|
|
13
|
-
*/
|
|
14
|
-
export function KeyValueInput({ value = [], onChange }) {
|
|
15
|
-
const [pairs, setPairs] = useState(value);
|
|
16
|
-
|
|
17
|
-
/** Updates a specific field for a pair at the given index */
|
|
18
|
-
const handlePairChange = useCallback((index, field, fieldValue) => {
|
|
19
|
-
const updatedPairs = pairs.map((pair, idx) => idx === index ? { ...pair, [field]: fieldValue } : pair);
|
|
20
|
-
setPairs(updatedPairs);
|
|
21
|
-
onChange(set(updatedPairs));
|
|
22
|
-
}, [pairs, onChange]);
|
|
23
|
-
|
|
24
|
-
/** Appends a new empty pair */
|
|
25
|
-
const handleAddPair = useCallback(() => {
|
|
26
|
-
const newPair = { key: '', value: '', _key: Math.random().toString(36).substr(2, 9) };
|
|
27
|
-
const updatedPairs = [...pairs, newPair];
|
|
28
|
-
setPairs(updatedPairs);
|
|
29
|
-
onChange(set(updatedPairs));
|
|
30
|
-
}, [pairs, onChange]);
|
|
31
|
-
|
|
32
|
-
/** Removes the pair at the given index */
|
|
33
|
-
const handleRemovePair = useCallback((index) => {
|
|
34
|
-
const updatedPairs = pairs.filter((_, idx) => idx !== index);
|
|
35
|
-
setPairs(updatedPairs);
|
|
36
|
-
onChange(set(updatedPairs));
|
|
37
|
-
}, [pairs, onChange]);
|
|
38
|
-
|
|
39
|
-
/** Swaps a pair with the one above it */
|
|
40
|
-
const handleMoveUp = useCallback((index) => {
|
|
41
|
-
if (index === 0) return;
|
|
42
|
-
const updatedPairs = [...pairs];
|
|
43
|
-
[updatedPairs[index], updatedPairs[index - 1]] = [updatedPairs[index - 1], updatedPairs[index]];
|
|
44
|
-
setPairs(updatedPairs);
|
|
45
|
-
onChange(set(updatedPairs));
|
|
46
|
-
}, [pairs, onChange]);
|
|
47
|
-
|
|
48
|
-
/** Swaps a pair with the one below it */
|
|
49
|
-
const handleMoveDown = useCallback((index) => {
|
|
50
|
-
if (index === pairs.length - 1) return;
|
|
51
|
-
const updatedPairs = [...pairs];
|
|
52
|
-
[updatedPairs[index], updatedPairs[index + 1]] = [updatedPairs[index + 1], updatedPairs[index]];
|
|
53
|
-
setPairs(updatedPairs);
|
|
54
|
-
onChange(set(updatedPairs));
|
|
55
|
-
}, [pairs, onChange]);
|
|
56
|
-
|
|
57
|
-
return (
|
|
58
|
-
<Stack space={3}>
|
|
59
|
-
{pairs.map((pair, index) => (
|
|
60
|
-
<Grid className="manualButtonWrap" columns={[2]} key={index} gap={0} style={{ position: 'relative' }}>
|
|
61
|
-
<div style={{ position: 'absolute', height: '100%', top: '0', left: '-10px', width: 'min-content', transform: 'translate(-100%, 0%)' }}>
|
|
62
|
-
<button className="manualButton manualButtonUp" style={{ fontSize: '15px', height: '50%' }} onClick={() => handleMoveUp(index)}>
|
|
63
|
-
<ArrowUpIcon />
|
|
64
|
-
</button>
|
|
65
|
-
<button className="manualButton manualButtonDown" style={{ fontSize: '15px', height: '50%' }} onClick={() => handleMoveDown(index)}>
|
|
66
|
-
<ArrowDownIcon />
|
|
67
|
-
</button>
|
|
68
|
-
</div>
|
|
69
|
-
|
|
70
|
-
<TextInput
|
|
71
|
-
value={pair.key}
|
|
72
|
-
onChange={(e) => handlePairChange(index, 'key', e.target.value)}
|
|
73
|
-
placeholder="Key"
|
|
74
|
-
/>
|
|
75
|
-
<div style={{ marginLeft: '-1px' }}>
|
|
76
|
-
<TextInput
|
|
77
|
-
value={pair.value}
|
|
78
|
-
onChange={(e) => handlePairChange(index, 'value', e.target.value)}
|
|
79
|
-
placeholder="Value"
|
|
80
|
-
/>
|
|
81
|
-
</div>
|
|
82
|
-
|
|
83
|
-
<button
|
|
84
|
-
className="manualButton"
|
|
85
|
-
onClick={() => handleRemovePair(index)}
|
|
86
|
-
style={{ position: 'absolute', top: '0', right: '-10px', transform: 'translate(100%, 0%)' }}
|
|
87
|
-
>
|
|
88
|
-
<TrashIcon />
|
|
89
|
-
</button>
|
|
90
|
-
</Grid>
|
|
91
|
-
))}
|
|
92
|
-
<Button tone="primary" onClick={handleAddPair} icon={AddIcon} text="Add Row" />
|
|
93
|
-
</Stack>
|
|
94
|
-
);
|
|
95
|
-
}
|
|
1
|
+
// Ordered key-value string pair editor for Sanity Studio — add, remove, and reorder rows
|
|
2
|
+
|
|
3
|
+
import React, { useState, useCallback } from 'react';
|
|
4
|
+
import { Button, Grid, Stack, TextInput } from '@sanity/ui';
|
|
5
|
+
import { AddIcon, ArrowDownIcon, ArrowUpIcon, TrashIcon } from '@sanity/icons';
|
|
6
|
+
import { set } from 'sanity';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Ordered key-value string pair editor with add, remove, and reorder controls.
|
|
10
|
+
* Writes an array of { _key, key, value } objects to Sanity.
|
|
11
|
+
* @param {Array} value - Current array of { _key, key, value } pairs
|
|
12
|
+
* @param {Function} onChange - Sanity onChange callback
|
|
13
|
+
*/
|
|
14
|
+
export function KeyValueInput({ value = [], onChange }) {
|
|
15
|
+
const [pairs, setPairs] = useState(value);
|
|
16
|
+
|
|
17
|
+
/** Updates a specific field for a pair at the given index */
|
|
18
|
+
const handlePairChange = useCallback((index, field, fieldValue) => {
|
|
19
|
+
const updatedPairs = pairs.map((pair, idx) => idx === index ? { ...pair, [field]: fieldValue } : pair);
|
|
20
|
+
setPairs(updatedPairs);
|
|
21
|
+
onChange(set(updatedPairs));
|
|
22
|
+
}, [pairs, onChange]);
|
|
23
|
+
|
|
24
|
+
/** Appends a new empty pair */
|
|
25
|
+
const handleAddPair = useCallback(() => {
|
|
26
|
+
const newPair = { key: '', value: '', _key: Math.random().toString(36).substr(2, 9) };
|
|
27
|
+
const updatedPairs = [...pairs, newPair];
|
|
28
|
+
setPairs(updatedPairs);
|
|
29
|
+
onChange(set(updatedPairs));
|
|
30
|
+
}, [pairs, onChange]);
|
|
31
|
+
|
|
32
|
+
/** Removes the pair at the given index */
|
|
33
|
+
const handleRemovePair = useCallback((index) => {
|
|
34
|
+
const updatedPairs = pairs.filter((_, idx) => idx !== index);
|
|
35
|
+
setPairs(updatedPairs);
|
|
36
|
+
onChange(set(updatedPairs));
|
|
37
|
+
}, [pairs, onChange]);
|
|
38
|
+
|
|
39
|
+
/** Swaps a pair with the one above it */
|
|
40
|
+
const handleMoveUp = useCallback((index) => {
|
|
41
|
+
if (index === 0) return;
|
|
42
|
+
const updatedPairs = [...pairs];
|
|
43
|
+
[updatedPairs[index], updatedPairs[index - 1]] = [updatedPairs[index - 1], updatedPairs[index]];
|
|
44
|
+
setPairs(updatedPairs);
|
|
45
|
+
onChange(set(updatedPairs));
|
|
46
|
+
}, [pairs, onChange]);
|
|
47
|
+
|
|
48
|
+
/** Swaps a pair with the one below it */
|
|
49
|
+
const handleMoveDown = useCallback((index) => {
|
|
50
|
+
if (index === pairs.length - 1) return;
|
|
51
|
+
const updatedPairs = [...pairs];
|
|
52
|
+
[updatedPairs[index], updatedPairs[index + 1]] = [updatedPairs[index + 1], updatedPairs[index]];
|
|
53
|
+
setPairs(updatedPairs);
|
|
54
|
+
onChange(set(updatedPairs));
|
|
55
|
+
}, [pairs, onChange]);
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<Stack space={3}>
|
|
59
|
+
{pairs.map((pair, index) => (
|
|
60
|
+
<Grid className="manualButtonWrap" columns={[2]} key={index} gap={0} style={{ position: 'relative' }}>
|
|
61
|
+
<div style={{ position: 'absolute', height: '100%', top: '0', left: '-10px', width: 'min-content', transform: 'translate(-100%, 0%)' }}>
|
|
62
|
+
<button className="manualButton manualButtonUp" style={{ fontSize: '15px', height: '50%' }} onClick={() => handleMoveUp(index)}>
|
|
63
|
+
<ArrowUpIcon />
|
|
64
|
+
</button>
|
|
65
|
+
<button className="manualButton manualButtonDown" style={{ fontSize: '15px', height: '50%' }} onClick={() => handleMoveDown(index)}>
|
|
66
|
+
<ArrowDownIcon />
|
|
67
|
+
</button>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<TextInput
|
|
71
|
+
value={pair.key}
|
|
72
|
+
onChange={(e) => handlePairChange(index, 'key', e.target.value)}
|
|
73
|
+
placeholder="Key"
|
|
74
|
+
/>
|
|
75
|
+
<div style={{ marginLeft: '-1px' }}>
|
|
76
|
+
<TextInput
|
|
77
|
+
value={pair.value}
|
|
78
|
+
onChange={(e) => handlePairChange(index, 'value', e.target.value)}
|
|
79
|
+
placeholder="Value"
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<button
|
|
84
|
+
className="manualButton"
|
|
85
|
+
onClick={() => handleRemovePair(index)}
|
|
86
|
+
style={{ position: 'absolute', top: '0', right: '-10px', transform: 'translate(100%, 0%)' }}
|
|
87
|
+
>
|
|
88
|
+
<TrashIcon />
|
|
89
|
+
</button>
|
|
90
|
+
</Grid>
|
|
91
|
+
))}
|
|
92
|
+
<Button tone="primary" onClick={handleAddPair} icon={AddIcon} text="Add Row" />
|
|
93
|
+
</Stack>
|
|
94
|
+
);
|
|
95
|
+
}
|