@advanced-rest-client/arc-electron-search-service

A package to handle content search in a renderer window

Usage no npm install needed!

<script type="module">
  import advancedRestClientArcElectronSearchService from 'https://cdn.skypack.dev/@advanced-rest-client/arc-electron-search-service';
</script>

README

ARC Electron content search service

Creates a pop up window that mimics Chrome's search bar.

Usage

$ npm i @advanced-rest-client/arc-electron-search-service

In the main process:

const {ContentSearchService} = require('@advanced-rest-client/arc-electron-search-service/main');
const {ArcPreferences} = require('@advanced-rest-client/arc-electron-preferences');
const startupOptions = {}; // Application start up options.
const prefs = new ArcPreferences();

// Required step, add common instance of preferences manager
ContentSearchService.prefsManager = prefs;
// Required step, listen for menu actions
ContentSearchService.listen(emmiter);

The emmiter is any object that emmits menu-action even with first argument to be application:find and second argument is the window object. ARC electron has menu manager that does this.

In the renderer process:

const {WindowSearchService} = require('@advanced-rest-client/arc-electron-search-service/renderer');
const service = new WindowSearchService();
service.listen();

The listen() function listens for electron's menu-action event. Event with application:find name will be handled by the service and add search window to the current window (from which the menu action was invoked).

This module works with Advanced REST Client application. It uses @advanced-rest-client/arc-electron-sources-manager to determine source of the web components import file for search window (hence use of preferences manager).

Search file import contains HTML imports for the web components used in window. Import file content should be as follows:

<link rel="import" href="bower_components/polymer/polymer-element.html">
<link rel="import" href="bower_components/shadycss/apply-shim.html">
<link rel="import" href="bower_components/polymer/lib/elements/custom-style.html">
<link rel="import" href="bower_components/polymer/lib/elements/dom-bind.html">
<link rel="import" href="bower_components/font-roboto-local/roboto.html">
<link rel="import" href="bower_components/paper-icon-button/paper-icon-button.html">
<link rel="import" href="bower_components/arc-icons/arc-icons.html">
<link rel="import" href="bower_components/paper-input/paper-input.html">
<link rel="import" href="bower_components/iron-a11y-keys/iron-a11y-keys.html">
<link rel="import" href="bower_components/iron-overlay-behavior/iron-overlay-behavior.html">
<link rel="import" href="bower_components/iron-resizable-behavior/iron-resizable-behavior.html">
<link rel="import" href="bower_components/iron-flex-layout/iron-flex-layout.html">

File location can be set in startup options in searchFile property.

Set startup options when initializing the app:

...
ContentSearchService.prefsManager = prefs;
ContentSearchService.startupOptions = {
  searchFile: path.join(__dirname, 'search-imports.html')
};
ContentSearchService.listen();