Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* createVariableCollection
|
||||
*
|
||||
* Creates a new Figma variable collection with the specified name and modes.
|
||||
* If `modeNames` has more than one entry, the first mode is renamed from
|
||||
* Figma's default "Mode 1" to the first name, and additional modes are added.
|
||||
*
|
||||
* Every created collection is tagged with `dsb_key` plugin data so it can be
|
||||
* found and cleaned up idempotently by `cleanupOrphans`.
|
||||
*
|
||||
* @param {string} name - The display name of the collection (e.g. "Color", "Spacing").
|
||||
* @param {string[]} modeNames - Ordered list of mode names (e.g. ["Light", "Dark"] or ["Value"]).
|
||||
* @param {string} [runId] - Optional dsb_run_id to tag for cleanup.
|
||||
* @returns {Promise<{
|
||||
* collection: VariableCollection,
|
||||
* modeIds: Record<string, string>
|
||||
* }>}
|
||||
* `modeIds` maps each mode name to its modeId string.
|
||||
*/
|
||||
async function createVariableCollection(name, modeNames, runId) {
|
||||
if (!modeNames || modeNames.length === 0) {
|
||||
throw new Error('createVariableCollection: modeNames must have at least one entry.')
|
||||
}
|
||||
|
||||
// Create the collection — Figma always creates it with one mode named "Mode 1".
|
||||
const collection = figma.variables.createVariableCollection(name)
|
||||
|
||||
// Tag for idempotent cleanup
|
||||
collection.setPluginData('dsb_key', `collection/${name}`)
|
||||
if (runId) {
|
||||
collection.setPluginData('dsb_run_id', runId)
|
||||
}
|
||||
|
||||
// modeIds accumulator
|
||||
const modeIds = {}
|
||||
|
||||
// Rename the default first mode
|
||||
const defaultMode = collection.modes[0]
|
||||
collection.renameMode(defaultMode.modeId, modeNames[0])
|
||||
modeIds[modeNames[0]] = defaultMode.modeId
|
||||
|
||||
// Add additional modes
|
||||
for (let i = 1; i < modeNames.length; i++) {
|
||||
const newModeId = collection.addMode(modeNames[i])
|
||||
modeIds[modeNames[i]] = newModeId
|
||||
}
|
||||
|
||||
return { collection, modeIds }
|
||||
}
|
||||
Reference in New Issue
Block a user