Skip to content

CharlieHess/electron-text-substitutions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

electron-text-substitutions

Are you…

  • Using Electron?
  • Making a Mac app?
  • And want it to respect your macOS text substitutions?

Then this is ✨ FOR YOU.

Install

npm i electron-text-substitutions --save

Electron ≥v1.2.2 is required for this to work.

Use

import performTextSubstitution from 'electron-text-substitutions';

let input = document.getElementById('my-input');
performTextSubstitution(input);

We use the system-preferences API to get the user's text substitutions. If you have smart quotes or dashes enabled, we'll handle that too.

Change notifications

To receive text preference change notifications, you'll need to call an additional method, that only works in the main process. This should be called before any renderer starts using text substitutions.

import {listenForPreferenceChanges} from 'electron-text-substitutions';
listenForPreferenceChanges();

API

Renderer Process

/**
 * Adds an `input` event listener to the given element (an <input> or
 * <textarea>) that will substitute text based on the user's replacements in
 * `NSUserDefaults`, as well as smart quotes and dashes.
 *
 * @param  {EventTarget} element  The DOM node to listen to; should fire the `input` event
 * @return {Disposable}           A `Disposable` that will clean up everything this method did
 */
performTextSubstitution(element);

Main Process

/**
 * Subscribes to text preference changed notifications and notifies listeners
 * in renderer processes. This method must be called from the main process, and
 * should be called before any renderer process calls `performTextSubstitution`.
 *
 * @return {Disposable}  A `Disposable` that will clean up everything this method did
 */
listenForPreferenceChanges() {

About

Substitute text in an input field based on macOS System Text Preferences

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published