Skip to content
This repository has been archived by the owner on Mar 22, 2023. It is now read-only.

A sketch module for creating an complex UI with a webview

Notifications You must be signed in to change notification settings

timohofmeijer/sketch-module-web-view

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sketch-module-web-view

A Sketch module for creating a complex UI with a webview.

Installation

To use this module in your Sketch plugin you need a bundler utility like skpm and add it as a dependency:

npm i -S sketch-module-web-view

Usage

import WebUI from 'sketch-module-web-view'

const options = {
  identifier: 'unique.id', // to reuse the UI
  x: 0,
  y: 0,
  width: 240,
  height: 180,
  background: NSColor.whiteColor(),
  onlyShowCloseButton: false,
  title: 'My ui',
  hideTitleBar: false,
  shouldKeepAround: true,
  frameLoadDelegate: { // https://developer.apple.com/reference/webkit/webframeloaddelegate?language=objc
    'webView:didFinishLoadForFrame:': function (webView, webFrame) {
      context.document.showMessage('UI loaded!')
      WebUI.clear()
    }
  },
  uiDelegate: {}, // https://developer.apple.com/reference/webkit/webuidelegate?language=objc
  onPanelClose: function () {
    // Stuff
  }
}

const webUI = new WebUI(context, 'path-in-resource-folder.html', options)

Communicating with the webview

Executing JS on the webview from the plugin

const res = webUI.eval('someJSFunction()')

Executing JS in the plugin from the webview

On the plugin:

options.handlers = {
  nativeLog: function (s) {
    context.document.showMessage(s)
  }
}

On the webview:

import pluginCall from 'sketch-module-web-view/client'

pluginCall('nativeLog', 'Called from the webview')

⚠️ When using options.handlers, the webView:didChangeLocationWithinPageForFrame: method of the frameLoadDelegate will be overwritten.

⚠️ When calling pluginCall, the window.location.hash will be modified.

About

A sketch module for creating an complex UI with a webview

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%