|
/* |
|
* Sample plugin code for Adobe XD. |
|
* |
|
* Visit http://adobexdplatform.com/ for API docs and more sample code. |
|
*/ |
|
|
|
// |
|
// Note: all of this is from STEP 2 |
|
//////////////////////////////////////////////////////////// |
|
|
|
var {Rectangle, Color} = require("scenegraph"); |
|
|
|
function createRectangle(selection) { |
|
var textNode = selection.items[0]; |
|
var bounds = textNode.boundsInParent; |
|
console.log(bounds); |
|
|
|
var shape = new Rectangle(); |
|
shape.width = bounds.width + 2*padding |
|
shape.height = bounds.height + 2*padding; |
|
shape.stroke = new Color("blue"); |
|
|
|
selection.insertionParent.addChild(shape); |
|
shape.placeInParentCoordinates( |
|
{x: 0, y: 0}, |
|
{x: bounds.x - padding, y: bounds.y - padding} |
|
); |
|
} |
|
|
|
// |
|
// This continues the introduction to UI in XD |
|
// In this step, we'll create our UI. In the next step, |
|
// we'll make the plugin useful again |
|
//////////////////////////////////////////////////////////// |
|
|
|
let dialog; |
|
|
|
function createDialog() { |
|
dialog = document.createElement("dialog"); |
|
|
|
// here is where we changed our UI by modifying `innerHTML` |
|
dialog.innerHTML = ` |
|
<style> |
|
form { |
|
width: 400px; |
|
} |
|
.row { |
|
display: flex; |
|
align-items: center; |
|
} |
|
</style> |
|
<form method="dialog"> |
|
<h1>Create Button Frame</h1> |
|
<hr /> |
|
<div class="row"> |
|
<label class="row"> |
|
<span>V:</span> |
|
<input type="text" uxp-quiet="true" id="txtV" placeholder="V padding" /> |
|
</label> |
|
<label class="row"> |
|
<span>H:</span> |
|
<input type="text" uxp-quiet="true" id="txtH" placeholder="H padding" /> |
|
</label> |
|
</div> |
|
<footer> |
|
<button id="cancel" type="reset" uxp-variant="secondary">Cancel</button> |
|
<button id="ok" type="submit" uxp-variant="cta">Apply</button> |
|
</footer> |
|
</form>`; |
|
|
|
// make sure the cancel button works! |
|
dialog.querySelector("#cancel").addEventListener("click", () => { |
|
dialog.close("reasonCanceled"); |
|
}) |
|
|
|
document.appendChild(dialog); |
|
} |
|
|
|
async function showDialog() { |
|
if (!dialog) { |
|
createDialog(); |
|
} |
|
|
|
const response = await dialog.showModal(); |
|
|
|
console.log(`Dialog response: ${response}`); |
|
} |
|
|
|
module.exports = { |
|
commands: { |
|
myPluginCommand: showDialog |
|
} |
|
}; |
|
|