#!/bin/sh

# Install focus-visible polyfill and copies into the source tree
# https://github.com/WICG/focus-visible

set -e

command -v npm >/dev/null 2>&1 || { echo >&2 "npm required but not found: exiting."; exit 1; }

if [ -d "./focus-visible" ]; then
  rm -rf focus-visible
fi

mkdir focus-visible
cd focus-visible
npm install focus-visible@5.2.0

# Location used to embed in client bundle for GWT build
FOCUS_VISIBLE_GWT_TARGET_DIR=../../src/org/rstudio/studio/client/workbench/ui/polyfill/js
cp ./node_modules/focus-visible/dist/focus-visible.js ${FOCUS_VISIBLE_GWT_TARGET_DIR}
cp ./node_modules/focus-visible/dist/focus-visible.min.js.map ${FOCUS_VISIBLE_GWT_TARGET_DIR}
# Strip source-map reference since it doesn't work via ClientBundle
sed '/^\/\/# sourceMappingURL=/d' ./node_modules/focus-visible/dist/focus-visible.min.js > ${FOCUS_VISIBLE_GWT_TARGET_DIR}/focus-visible.min.js

# Location used to embed in client bundle for GWT build
FOCUS_VISIBLE_OTHER_TARGET_DIR=../../www
cp ./node_modules/focus-visible/dist/focus-visible.js ${FOCUS_VISIBLE_OTHER_TARGET_DIR}/js
cp ./node_modules/focus-visible/dist/focus-visible.min.js ${FOCUS_VISIBLE_OTHER_TARGET_DIR}/js
cp ./node_modules/focus-visible/dist/focus-visible.min.js.map ${FOCUS_VISIBLE_OTHER_TARGET_DIR}/js

# focus-visible.js relies on styles set in focus-visible.css,
# currently found in two locations in the source tree. The one in
# src/org/rstudio/studio/client/workbench/ui/polyfill/css is treated as
# the master and copied to the other location by this script.
cp ${FOCUS_VISIBLE_GWT_TARGET_DIR}/../css/focus-visible.css ${FOCUS_VISIBLE_OTHER_TARGET_DIR}/css/

echo Done!
