Skip to main content
Question

Clone node from a separate file to current page

  • October 22, 2023
  • 3 replies
  • 796 views

Hi,

I’m trying to create a plugin with a UI elements library. I have a document with all the components I want to list and the plugin will have an image preview of each. When clicking the image, the component will be cloned on the current page.

My current code looks like this

 <div class="image-gallery">
    <div>
      <a href="#" class="gallery-image" data-file-id="9JkYmYgxjpGzBUNiJESfdi" data-node-id="3698-1207">
        <img class="thumbnail" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Placeholder_view_vector.svg/310px-Placeholder_view_vector.svg.png" alt="Gallery Image">
      </a>
    </div>
  </div>

<script>
    document.addEventListener("DOMContentLoaded", function() {
      // Find the image element
      const imageElement = document.querySelector(".gallery-image");

      // Add a click event listener to the image
      imageElement.addEventListener("click", function(event) {
        event.preventDefault();
        
        // Get the data attributes with file ID and node ID
        const fileId = imageElement.getAttribute("data-file-id");
        const nodeId = imageElement.getAttribute("data-node-id");
        
          // Use the Figma API to clone the component
          const node = figma.getNodeById(nodeId);
          const clone = node.clone();

          // Parent the clone under the current page
          const currentPage = figma.currentPage;
          currentPage.appendChild(clone);
      });
    });
  </script>

What am I missing because it’s not working?

Thanks in advance!

This topic has been closed for replies.

3 replies

tank666
  • October 22, 2023

Access to the figma global object is only possible from code.js.


  • Author
  • October 22, 2023

Thanks @tank666
I even found some plugins that have this functionality.

Figma

So in order to achieve this I need to publish the file as a team library and use the methods you mentioned, right?


tank666
  • October 22, 2023

Some developers use their own solutions that are not described in the Figma documentation.

Exactly.