Socket
Socket
Sign inDemoInstall

@fremtind/jkl-react-hooks

Package Overview
Dependencies
Maintainers
2
Versions
204
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fremtind/jkl-react-hooks - npm Package Compare versions

Comparing version 1.0.0-alpha.11 to 1.0.0

build/useIntersectionObserver/useIntersectionObserver.d.ts

201

build/browser/index.js

@@ -1,3 +0,53 @@

import React, { useRef, useState, useLayoutEffect, useEffect } from 'react';
import React, { useRef, useState, useLayoutEffect, useEffect, useReducer } from 'react';
import { breakpoints } from '@fremtind/jkl-core';
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _slicedToArray(arr, i) {

@@ -172,3 +222,3 @@ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();

fn();
fn(event);
}

@@ -189,2 +239,147 @@

export { useAnimatedHeight, useClickOutside, useFocusOutside, useKeyListener };
var hasWindowWithMutationObserver = function hasWindowWithMutationObserver() {
return typeof window !== "undefined" && typeof MutationObserver !== "undefined";
};
var useMutationObserver = function useMutationObserver(targetRef, onObservation, config) {
var observerRef = useRef(null);
useEffect(function () {
if (hasWindowWithMutationObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new MutationObserver(onObservation);
if (target) {
observer.observe(target, config);
}
}
return function () {
if (hasWindowWithMutationObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var hasWindowWithIntersectionObserver = function hasWindowWithIntersectionObserver() {
return typeof window !== "undefined" && typeof IntersectionObserver !== "undefined";
};
var useIntersectionObserver = function useIntersectionObserver(targetRef, onIntersect, fallback, options) {
var observerRef = useRef(null);
useEffect(function () {
if (hasWindowWithIntersectionObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new IntersectionObserver(onIntersect, options);
if (target) {
observer.observe(target);
}
} else {
fallback();
}
return function () {
if (hasWindowWithIntersectionObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var ActionTypes;
(function (ActionTypes) {
ActionTypes["resized"] = "WINDOW_RESIZED";
})(ActionTypes || (ActionTypes = {}));
var actionTypes = {
resized: ActionTypes.resized
};
var setDeviceSize = function setDeviceSize(width, height) {
return {
isSmallDevice: width < breakpoints.small,
isMediumDevice: width > breakpoints.small && width < breakpoints.medium,
isLargeDevice: width > breakpoints.medium && width < breakpoints.large,
isXlDevice: width > breakpoints.large,
isPortrait: height >= width,
isLandscape: height < width,
inner: {
height: height,
width: width
}
};
};
var initialState = {
isSmallDevice: false,
isMediumDevice: false,
isLargeDevice: false,
isXlDevice: false,
isLandscape: false,
isPortrait: false,
inner: {
height: 0,
width: 0
}
};
var init = function init() {
var width = typeof window !== "undefined" ? window.innerWidth : 0;
var height = typeof window !== "undefined" ? window.innerHeight : 0;
return setDeviceSize(width, height);
};
var reducer = function reducer(state, _ref) {
var type = _ref.type,
width = _ref.width,
height = _ref.height;
switch (type) {
case actionTypes.resized:
return _objectSpread2({}, state, {}, setDeviceSize(width, height));
}
};
var useScreen = function useScreen() {
var _useReducer = useReducer(reducer, initialState, init),
_useReducer2 = _slicedToArray(_useReducer, 2),
device = _useReducer2[0],
deviceDispatch = _useReducer2[1];
var handleScreenChange = function handleScreenChange() {
return requestAnimationFrame(function () {
return deviceDispatch({
type: actionTypes.resized,
width: window.innerWidth,
height: window.innerHeight
});
});
};
useEffect(function () {
if (typeof window !== "undefined") {
window.addEventListener("resize", handleScreenChange);
}
return function () {
if (typeof window !== "undefined") {
window.removeEventListener("resize", handleScreenChange);
}
};
}, []);
return _objectSpread2({}, device);
};
export { initialState as initialScreenState, useAnimatedHeight, useClickOutside, useFocusOutside, useIntersectionObserver, useKeyListener, useMutationObserver, useScreen };

2

build/browser/index.min.js

@@ -1,1 +0,1 @@

import n,{useRef as t,useState as e,useLayoutEffect as r,useEffect as o}from"react";function c(n,t){return function(n){if(Array.isArray(n))return n}(n)||function(n,t){if(!(Symbol.iterator in Object(n)||"[object Arguments]"===Object.prototype.toString.call(n)))return;var e=[],r=!0,o=!1,c=void 0;try{for(var i,u=n[Symbol.iterator]();!(r=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);r=!0);}catch(n){o=!0,c=n}finally{try{r||null==u.return||u.return()}finally{if(o)throw c}}return e}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(n){var i,a,f=t(null),l=c(e(!0),2),s=l[0],d=l[1];function m(){var n=u(f);n&&n.removeAttribute("style")}function v(){var t=u(f);t&&(t.style.display="block",t.style.overflow="hidden",n?(t.style.height="0",t.style.height="".concat(t.scrollHeight,"px")):(t.style.height="".concat(t.scrollHeight,"px"),i=requestAnimationFrame((function(){a=requestAnimationFrame((function(){t.style.height="".concat(0,"px")}))}))))}return r((function(){s||v()}),[n]),o((function(){var n=u(f);return n&&n.addEventListener("transitionend",m),function(){n&&n.removeEventListener("transitionend",m)}}),[n]),o((function(){return d(!1),function(){cancelAnimationFrame(i),cancelAnimationFrame(a)}}),[]),[f,v]}function u(n){return n.current&&(n.current.el||n.current)}function a(t,e){function r(n){t&&t.current&&!t.current.contains(n.target)&&e()}n.useEffect((function(){return t&&document&&document.addEventListener("click",r),function(){t&&document&&document.removeEventListener("click",r)}}))}function f(t,e){function r(n){t&&t.current&&!t.current.contains(n.target)&&e()}n.useEffect((function(){return t&&document&&document.addEventListener("focusin",r),function(){t&&document&&document.removeEventListener("focusin",r)}}))}function l(n,t,e){function r(n){t&&!t.includes(n.key)||e()}"string"==typeof t&&(t=[t]),o((function(){return n&&n.current&&n.current.addEventListener("keydown",r),function(){n&&n.current&&n.current.removeEventListener("keydown",r)}}))}export{i as useAnimatedHeight,a as useClickOutside,f as useFocusOutside,l as useKeyListener};
import e,{useRef as n,useState as t,useLayoutEffect as r,useEffect as i,useReducer as o}from"react";import{breakpoints as c}from"@fremtind/jkl-core";function u(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function f(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?f(Object(t),!0).forEach((function(n){u(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):f(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,i=!1,o=void 0;try{for(var c,u=e[Symbol.iterator]();!(r=(c=u.next()).done)&&(t.push(c.value),!n||t.length!==n);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==u.return||u.return()}finally{if(i)throw o}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function d(e){var o,c,u=n(null),f=s(t(!0),2),a=f[0],d=f[1];function v(){var e=l(u);e&&e.removeAttribute("style")}function m(){var n=l(u);n&&(n.style.display="block",n.style.overflow="hidden",e?(n.style.height="0",n.style.height="".concat(n.scrollHeight,"px")):(n.style.height="".concat(n.scrollHeight,"px"),o=requestAnimationFrame((function(){c=requestAnimationFrame((function(){n.style.height="".concat(0,"px")}))}))))}return r((function(){a||m()}),[e]),i((function(){var e=l(u);return e&&e.addEventListener("transitionend",v),function(){e&&e.removeEventListener("transitionend",v)}}),[e]),i((function(){return d(!1),function(){cancelAnimationFrame(o),cancelAnimationFrame(c)}}),[]),[u,m]}function l(e){return e.current&&(e.current.el||e.current)}function v(n,t){function r(e){n&&n.current&&!n.current.contains(e.target)&&t()}e.useEffect((function(){return n&&document&&document.addEventListener("click",r),function(){n&&document&&document.removeEventListener("click",r)}}))}function m(n,t){function r(e){n&&n.current&&!n.current.contains(e.target)&&t()}e.useEffect((function(){return n&&document&&document.addEventListener("focusin",r),function(){n&&document&&document.removeEventListener("focusin",r)}}))}function w(e,n,t){function r(e){n&&!n.includes(e.key)||t(e)}"string"==typeof n&&(n=[n]),i((function(){return e&&e.current&&e.current.addEventListener("keydown",r),function(){e&&e.current&&e.current.removeEventListener("keydown",r)}}))}var y,p=function(){return"undefined"!=typeof window&&"undefined"!=typeof MutationObserver},h=function(e,t,r){var o=n(null);i((function(){if(p()){var n=o.current,i=e.current;n&&n.disconnect(),n=new MutationObserver(t),i&&n.observe(i,r)}return function(){p()&&o&&o.current&&o.current.disconnect()}}),[e])},b=function(){return"undefined"!=typeof window&&"undefined"!=typeof IntersectionObserver},g=function(e,t,r,o){var c=n(null);i((function(){if(b()){var n=c.current,i=e.current;n&&n.disconnect(),n=new IntersectionObserver(t,o),i&&n.observe(i)}else r();return function(){b()&&c&&c.current&&c.current.disconnect()}}),[e])};!function(e){e.resized="WINDOW_RESIZED"}(y||(y={}));var O={resized:y.resized},E=function(e,n){return{isSmallDevice:e<c.small,isMediumDevice:e>c.small&&e<c.medium,isLargeDevice:e>c.medium&&e<c.large,isXlDevice:e>c.large,isPortrait:n>=e,isLandscape:n<e,inner:{height:n,width:e}}},j={isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1,inner:{height:0,width:0}},D=function(){var e="undefined"!=typeof window?window.innerWidth:0,n="undefined"!=typeof window?window.innerHeight:0;return E(e,n)},L=function(e,n){var t=n.type,r=n.width,i=n.height;switch(t){case O.resized:return a({},e,{},E(r,i))}},P=function(){var e=s(o(L,j,D),2),n=e[0],t=e[1],r=function(){return requestAnimationFrame((function(){return t({type:O.resized,width:window.innerWidth,height:window.innerHeight})}))};return i((function(){return"undefined"!=typeof window&&window.addEventListener("resize",r),function(){"undefined"!=typeof window&&window.removeEventListener("resize",r)}}),[]),a({},n)};export{j as initialScreenState,d as useAnimatedHeight,v as useClickOutside,m as useFocusOutside,g as useIntersectionObserver,w as useKeyListener,h as useMutationObserver,P as useScreen};

@@ -9,3 +9,53 @@ 'use strict';

var React__default = _interopDefault(React);
var jklCore = require('@fremtind/jkl-core');
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _slicedToArray(arr, i) {

@@ -180,3 +230,3 @@ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();

fn();
fn(event);
}

@@ -197,5 +247,154 @@

var hasWindowWithMutationObserver = function hasWindowWithMutationObserver() {
return typeof window !== "undefined" && typeof MutationObserver !== "undefined";
};
var useMutationObserver = function useMutationObserver(targetRef, onObservation, config) {
var observerRef = React.useRef(null);
React.useEffect(function () {
if (hasWindowWithMutationObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new MutationObserver(onObservation);
if (target) {
observer.observe(target, config);
}
}
return function () {
if (hasWindowWithMutationObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var hasWindowWithIntersectionObserver = function hasWindowWithIntersectionObserver() {
return typeof window !== "undefined" && typeof IntersectionObserver !== "undefined";
};
var useIntersectionObserver = function useIntersectionObserver(targetRef, onIntersect, fallback, options) {
var observerRef = React.useRef(null);
React.useEffect(function () {
if (hasWindowWithIntersectionObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new IntersectionObserver(onIntersect, options);
if (target) {
observer.observe(target);
}
} else {
fallback();
}
return function () {
if (hasWindowWithIntersectionObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var ActionTypes;
(function (ActionTypes) {
ActionTypes["resized"] = "WINDOW_RESIZED";
})(ActionTypes || (ActionTypes = {}));
var actionTypes = {
resized: ActionTypes.resized
};
var setDeviceSize = function setDeviceSize(width, height) {
return {
isSmallDevice: width < jklCore.breakpoints.small,
isMediumDevice: width > jklCore.breakpoints.small && width < jklCore.breakpoints.medium,
isLargeDevice: width > jklCore.breakpoints.medium && width < jklCore.breakpoints.large,
isXlDevice: width > jklCore.breakpoints.large,
isPortrait: height >= width,
isLandscape: height < width,
inner: {
height: height,
width: width
}
};
};
var initialState = {
isSmallDevice: false,
isMediumDevice: false,
isLargeDevice: false,
isXlDevice: false,
isLandscape: false,
isPortrait: false,
inner: {
height: 0,
width: 0
}
};
var init = function init() {
var width = typeof window !== "undefined" ? window.innerWidth : 0;
var height = typeof window !== "undefined" ? window.innerHeight : 0;
return setDeviceSize(width, height);
};
var reducer = function reducer(state, _ref) {
var type = _ref.type,
width = _ref.width,
height = _ref.height;
switch (type) {
case actionTypes.resized:
return _objectSpread2({}, state, {}, setDeviceSize(width, height));
}
};
var useScreen = function useScreen() {
var _useReducer = React.useReducer(reducer, initialState, init),
_useReducer2 = _slicedToArray(_useReducer, 2),
device = _useReducer2[0],
deviceDispatch = _useReducer2[1];
var handleScreenChange = function handleScreenChange() {
return requestAnimationFrame(function () {
return deviceDispatch({
type: actionTypes.resized,
width: window.innerWidth,
height: window.innerHeight
});
});
};
React.useEffect(function () {
if (typeof window !== "undefined") {
window.addEventListener("resize", handleScreenChange);
}
return function () {
if (typeof window !== "undefined") {
window.removeEventListener("resize", handleScreenChange);
}
};
}, []);
return _objectSpread2({}, device);
};
exports.initialScreenState = initialState;
exports.useAnimatedHeight = useAnimatedHeight;
exports.useClickOutside = useClickOutside;
exports.useFocusOutside = useFocusOutside;
exports.useIntersectionObserver = useIntersectionObserver;
exports.useKeyListener = useKeyListener;
exports.useMutationObserver = useMutationObserver;
exports.useScreen = useScreen;

@@ -1,3 +0,53 @@

import React, { useRef, useState, useLayoutEffect, useEffect } from 'react';
import React, { useRef, useState, useLayoutEffect, useEffect, useReducer } from 'react';
import { breakpoints } from '@fremtind/jkl-core';
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _slicedToArray(arr, i) {

@@ -172,3 +222,3 @@ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();

fn();
fn(event);
}

@@ -189,2 +239,147 @@

export { useAnimatedHeight, useClickOutside, useFocusOutside, useKeyListener };
var hasWindowWithMutationObserver = function hasWindowWithMutationObserver() {
return typeof window !== "undefined" && typeof MutationObserver !== "undefined";
};
var useMutationObserver = function useMutationObserver(targetRef, onObservation, config) {
var observerRef = useRef(null);
useEffect(function () {
if (hasWindowWithMutationObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new MutationObserver(onObservation);
if (target) {
observer.observe(target, config);
}
}
return function () {
if (hasWindowWithMutationObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var hasWindowWithIntersectionObserver = function hasWindowWithIntersectionObserver() {
return typeof window !== "undefined" && typeof IntersectionObserver !== "undefined";
};
var useIntersectionObserver = function useIntersectionObserver(targetRef, onIntersect, fallback, options) {
var observerRef = useRef(null);
useEffect(function () {
if (hasWindowWithIntersectionObserver()) {
var observer = observerRef.current;
var target = targetRef.current;
if (observer) {
observer.disconnect();
}
observer = new IntersectionObserver(onIntersect, options);
if (target) {
observer.observe(target);
}
} else {
fallback();
}
return function () {
if (hasWindowWithIntersectionObserver() && observerRef && observerRef.current) {
observerRef.current.disconnect();
}
};
}, [targetRef]);
};
var ActionTypes;
(function (ActionTypes) {
ActionTypes["resized"] = "WINDOW_RESIZED";
})(ActionTypes || (ActionTypes = {}));
var actionTypes = {
resized: ActionTypes.resized
};
var setDeviceSize = function setDeviceSize(width, height) {
return {
isSmallDevice: width < breakpoints.small,
isMediumDevice: width > breakpoints.small && width < breakpoints.medium,
isLargeDevice: width > breakpoints.medium && width < breakpoints.large,
isXlDevice: width > breakpoints.large,
isPortrait: height >= width,
isLandscape: height < width,
inner: {
height: height,
width: width
}
};
};
var initialState = {
isSmallDevice: false,
isMediumDevice: false,
isLargeDevice: false,
isXlDevice: false,
isLandscape: false,
isPortrait: false,
inner: {
height: 0,
width: 0
}
};
var init = function init() {
var width = typeof window !== "undefined" ? window.innerWidth : 0;
var height = typeof window !== "undefined" ? window.innerHeight : 0;
return setDeviceSize(width, height);
};
var reducer = function reducer(state, _ref) {
var type = _ref.type,
width = _ref.width,
height = _ref.height;
switch (type) {
case actionTypes.resized:
return _objectSpread2({}, state, {}, setDeviceSize(width, height));
}
};
var useScreen = function useScreen() {
var _useReducer = useReducer(reducer, initialState, init),
_useReducer2 = _slicedToArray(_useReducer, 2),
device = _useReducer2[0],
deviceDispatch = _useReducer2[1];
var handleScreenChange = function handleScreenChange() {
return requestAnimationFrame(function () {
return deviceDispatch({
type: actionTypes.resized,
width: window.innerWidth,
height: window.innerHeight
});
});
};
useEffect(function () {
if (typeof window !== "undefined") {
window.addEventListener("resize", handleScreenChange);
}
return function () {
if (typeof window !== "undefined") {
window.removeEventListener("resize", handleScreenChange);
}
};
}, []);
return _objectSpread2({}, device);
};
export { initialState as initialScreenState, useAnimatedHeight, useClickOutside, useFocusOutside, useIntersectionObserver, useKeyListener, useMutationObserver, useScreen };

@@ -1,1 +0,1 @@

import n,{useRef as t,useState as e,useLayoutEffect as r,useEffect as o}from"react";function c(n,t){return function(n){if(Array.isArray(n))return n}(n)||function(n,t){if(!(Symbol.iterator in Object(n)||"[object Arguments]"===Object.prototype.toString.call(n)))return;var e=[],r=!0,o=!1,c=void 0;try{for(var i,u=n[Symbol.iterator]();!(r=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);r=!0);}catch(n){o=!0,c=n}finally{try{r||null==u.return||u.return()}finally{if(o)throw c}}return e}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(n){var i,a,f=t(null),l=c(e(!0),2),s=l[0],d=l[1];function m(){var n=u(f);n&&n.removeAttribute("style")}function v(){var t=u(f);t&&(t.style.display="block",t.style.overflow="hidden",n?(t.style.height="0",t.style.height="".concat(t.scrollHeight,"px")):(t.style.height="".concat(t.scrollHeight,"px"),i=requestAnimationFrame((function(){a=requestAnimationFrame((function(){t.style.height="".concat(0,"px")}))}))))}return r((function(){s||v()}),[n]),o((function(){var n=u(f);return n&&n.addEventListener("transitionend",m),function(){n&&n.removeEventListener("transitionend",m)}}),[n]),o((function(){return d(!1),function(){cancelAnimationFrame(i),cancelAnimationFrame(a)}}),[]),[f,v]}function u(n){return n.current&&(n.current.el||n.current)}function a(t,e){function r(n){t&&t.current&&!t.current.contains(n.target)&&e()}n.useEffect((function(){return t&&document&&document.addEventListener("click",r),function(){t&&document&&document.removeEventListener("click",r)}}))}function f(t,e){function r(n){t&&t.current&&!t.current.contains(n.target)&&e()}n.useEffect((function(){return t&&document&&document.addEventListener("focusin",r),function(){t&&document&&document.removeEventListener("focusin",r)}}))}function l(n,t,e){function r(n){t&&!t.includes(n.key)||e()}"string"==typeof t&&(t=[t]),o((function(){return n&&n.current&&n.current.addEventListener("keydown",r),function(){n&&n.current&&n.current.removeEventListener("keydown",r)}}))}export{i as useAnimatedHeight,a as useClickOutside,f as useFocusOutside,l as useKeyListener};
import e,{useRef as n,useState as t,useLayoutEffect as r,useEffect as i,useReducer as o}from"react";import{breakpoints as c}from"@fremtind/jkl-core";function u(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function f(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?f(Object(t),!0).forEach((function(n){u(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):f(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,i=!1,o=void 0;try{for(var c,u=e[Symbol.iterator]();!(r=(c=u.next()).done)&&(t.push(c.value),!n||t.length!==n);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==u.return||u.return()}finally{if(i)throw o}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function d(e){var o,c,u=n(null),f=s(t(!0),2),a=f[0],d=f[1];function v(){var e=l(u);e&&e.removeAttribute("style")}function m(){var n=l(u);n&&(n.style.display="block",n.style.overflow="hidden",e?(n.style.height="0",n.style.height="".concat(n.scrollHeight,"px")):(n.style.height="".concat(n.scrollHeight,"px"),o=requestAnimationFrame((function(){c=requestAnimationFrame((function(){n.style.height="".concat(0,"px")}))}))))}return r((function(){a||m()}),[e]),i((function(){var e=l(u);return e&&e.addEventListener("transitionend",v),function(){e&&e.removeEventListener("transitionend",v)}}),[e]),i((function(){return d(!1),function(){cancelAnimationFrame(o),cancelAnimationFrame(c)}}),[]),[u,m]}function l(e){return e.current&&(e.current.el||e.current)}function v(n,t){function r(e){n&&n.current&&!n.current.contains(e.target)&&t()}e.useEffect((function(){return n&&document&&document.addEventListener("click",r),function(){n&&document&&document.removeEventListener("click",r)}}))}function m(n,t){function r(e){n&&n.current&&!n.current.contains(e.target)&&t()}e.useEffect((function(){return n&&document&&document.addEventListener("focusin",r),function(){n&&document&&document.removeEventListener("focusin",r)}}))}function w(e,n,t){function r(e){n&&!n.includes(e.key)||t(e)}"string"==typeof n&&(n=[n]),i((function(){return e&&e.current&&e.current.addEventListener("keydown",r),function(){e&&e.current&&e.current.removeEventListener("keydown",r)}}))}var y,p=function(){return"undefined"!=typeof window&&"undefined"!=typeof MutationObserver},h=function(e,t,r){var o=n(null);i((function(){if(p()){var n=o.current,i=e.current;n&&n.disconnect(),n=new MutationObserver(t),i&&n.observe(i,r)}return function(){p()&&o&&o.current&&o.current.disconnect()}}),[e])},b=function(){return"undefined"!=typeof window&&"undefined"!=typeof IntersectionObserver},g=function(e,t,r,o){var c=n(null);i((function(){if(b()){var n=c.current,i=e.current;n&&n.disconnect(),n=new IntersectionObserver(t,o),i&&n.observe(i)}else r();return function(){b()&&c&&c.current&&c.current.disconnect()}}),[e])};!function(e){e.resized="WINDOW_RESIZED"}(y||(y={}));var O={resized:y.resized},E=function(e,n){return{isSmallDevice:e<c.small,isMediumDevice:e>c.small&&e<c.medium,isLargeDevice:e>c.medium&&e<c.large,isXlDevice:e>c.large,isPortrait:n>=e,isLandscape:n<e,inner:{height:n,width:e}}},j={isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1,inner:{height:0,width:0}},D=function(){var e="undefined"!=typeof window?window.innerWidth:0,n="undefined"!=typeof window?window.innerHeight:0;return E(e,n)},L=function(e,n){var t=n.type,r=n.width,i=n.height;switch(t){case O.resized:return a({},e,{},E(r,i))}},P=function(){var e=s(o(L,j,D),2),n=e[0],t=e[1],r=function(){return requestAnimationFrame((function(){return t({type:O.resized,width:window.innerWidth,height:window.innerHeight})}))};return i((function(){return"undefined"!=typeof window&&window.addEventListener("resize",r),function(){"undefined"!=typeof window&&window.removeEventListener("resize",r)}}),[]),a({},n)};export{j as initialScreenState,d as useAnimatedHeight,v as useClickOutside,m as useFocusOutside,g as useIntersectionObserver,w as useKeyListener,h as useMutationObserver,P as useScreen};

@@ -5,1 +5,5 @@ export { useAnimatedHeight } from "./animation";

export { useKeyListener } from "./useKeyListener";
export { useMutationObserver } from "./useMutationObserver/useMutationObserver";
export { useIntersectionObserver } from "./useIntersectionObserver/useIntersectionObserver";
export { useScreen } from "./useScreen/useScreen";
export { initialState as initialScreenState } from "./useScreen/state";
import { RefObject } from "react";
export declare function useKeyListener(ref: RefObject<HTMLElement> | null, keys: string[] | string | null, fn: () => void): void;
export declare function useKeyListener(ref: RefObject<HTMLElement> | null, keys: string[] | string | null, fn: (event: KeyboardEvent) => void): void;

@@ -6,12 +6,27 @@ # Change Log

# [1.0.0-alpha.11](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.10...@fremtind/jkl-react-hooks@1.0.0-alpha.11) (2019-11-01)
# [1.0.0](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.4.1...@fremtind/jkl-react-hooks@1.0.0) (2020-03-05)
**Note:** Version bump only for package @fremtind/jkl-react-hooks
### Bug Fixes
* **react-hooks:** fix check for window object in useScreen ([fce24bc](https://github.com/fremtind/jokul/commit/fce24bc8bf96960a15334017c2c54fc7cd75762d))
* **react-hooks:** fix import ([c47c0bc](https://github.com/fremtind/jokul/commit/c47c0bcb9ebf320ef67800c8925179406504a520))
### Features
# [1.0.0-alpha.10](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.2...@fremtind/jkl-react-hooks@1.0.0-alpha.10) (2019-11-01)
* **core:** add new func colors, remove illustration colors ([7847426](https://github.com/fremtind/jokul/commit/7847426fe77f723cd68085d4d995b3d867693c86))
* **react-hooks:** add hook for responsivity in js ([4c36d27](https://github.com/fremtind/jokul/commit/4c36d27a8928a329e4ead16636f7f5a33d6b423f))
### BREAKING CHANGES
* **core:** Removes illustration colors: sand, jord, sol, blomst, skog, hav
## [0.4.1](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.4.0...@fremtind/jkl-react-hooks@0.4.1) (2020-02-19)
**Note:** Version bump only for package @fremtind/jkl-react-hooks

@@ -23,4 +38,21 @@

# [1.0.0-alpha.9](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.8...@fremtind/jkl-react-hooks@1.0.0-alpha.9) (2019-11-01)
# [0.4.0](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.3.1...@fremtind/jkl-react-hooks@0.4.0) (2020-02-18)
### Bug Fixes
* make use of new color token (changed name) ([f14c149](https://github.com/fremtind/jokul/commit/f14c149f779e65fe0775afde4421aef26be8ed1d))
* use new text-style mixins ([2873a57](https://github.com/fremtind/jokul/commit/2873a57f4570ddb87a7390a773433d26a9fde4ac))
### Features
* **react-hooks:** pass event to function in useKeyListener ([432ce11](https://github.com/fremtind/jokul/commit/432ce1160d85c7674e98277b2309d93f9f355d46))
## [0.3.1](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.3.0...@fremtind/jkl-react-hooks@0.3.1) (2020-01-16)
**Note:** Version bump only for package @fremtind/jkl-react-hooks

@@ -32,4 +64,25 @@

# [1.0.0-alpha.8](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.7...@fremtind/jkl-react-hooks@1.0.0-alpha.8) (2019-11-01)
# [0.3.0](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.5...@fremtind/jkl-react-hooks@0.3.0) (2020-01-16)
### Bug Fixes
* fix lint issues after eslint update ([259db8b](https://github.com/fremtind/jokul/commit/259db8bf27f6751ec86c413129162728c3c903d6))
* **dividerline:** use intersection hook in dividerline ([4d983b6](https://github.com/fremtind/jokul/commit/4d983b6dec70efd8ff60093f9e103a1344867f86))
* **react-hooks:** fix click outside example ([51a1a71](https://github.com/fremtind/jokul/commit/51a1a71ccc2a6ad69bf6eb52e8e3f30d12f7d32a))
### Features
* **portal:** use examples as documentation for all comp ([e99e56a](https://github.com/fremtind/jokul/commit/e99e56ab2f5bf13cd0e72bf010e6472a08ffabe9))
* **react-hooks:** add intersection observer hook ([6a6e787](https://github.com/fremtind/jokul/commit/6a6e7875542e8563d7f802500525194335c9ba19))
* **react-hooks:** add mutationobserver component ([d6caea6](https://github.com/fremtind/jokul/commit/d6caea6dca91cc7a92a193fc8ac9bdda6906f2e0))
* **react-hooks:** improve react hooks documentation, add to portal ([bb0ff2e](https://github.com/fremtind/jokul/commit/bb0ff2ea005343dd1ea2e5fda121b9aef478359d))
## 0.2.14 (2020-01-10)
**Note:** Version bump only for package @fremtind/jkl-react-hooks

@@ -41,3 +94,3 @@

# [1.0.0-alpha.7](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.6...@fremtind/jkl-react-hooks@1.0.0-alpha.7) (2019-10-31)
## 0.2.13 (2020-01-10)

@@ -50,3 +103,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.6](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.5...@fremtind/jkl-react-hooks@1.0.0-alpha.6) (2019-10-25)
## 0.2.12 (2020-01-08)

@@ -59,3 +112,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.5](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.4...@fremtind/jkl-react-hooks@1.0.0-alpha.5) (2019-10-25)
## 0.2.11 (2020-01-07)

@@ -68,3 +121,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.4](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.3...@fremtind/jkl-react-hooks@1.0.0-alpha.4) (2019-10-25)
## 0.2.10 (2020-01-07)

@@ -77,3 +130,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.3](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.2...@fremtind/jkl-react-hooks@1.0.0-alpha.3) (2019-10-25)
## 0.2.9 (2020-01-07)

@@ -86,3 +139,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.2](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.1...@fremtind/jkl-react-hooks@1.0.0-alpha.2) (2019-10-24)
## 0.2.8 (2019-12-20)

@@ -95,3 +148,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.1](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@1.0.0-alpha.0...@fremtind/jkl-react-hooks@1.0.0-alpha.1) (2019-10-24)
## 0.2.7 (2019-12-20)

@@ -104,3 +157,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

# [1.0.0-alpha.0](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.2...@fremtind/jkl-react-hooks@1.0.0-alpha.0) (2019-10-24)
## 0.2.6 (2019-12-20)

@@ -113,3 +166,3 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

## [0.2.2](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.1...@fremtind/jkl-react-hooks@0.2.2) (2019-10-09)
## 0.2.5 (2019-12-20)

@@ -122,23 +175,29 @@ **Note:** Version bump only for package @fremtind/jkl-react-hooks

## [0.2.1](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.0...@fremtind/jkl-react-hooks@0.2.1) (2019-09-26)
## 0.2.4 (2019-12-20)
**Note:** Version bump only for package @fremtind/jkl-react-hooks
## 0.2.3 (2019-12-19)
**Note:** Version bump only for package @fremtind/jkl-react-hooks
## [0.2.2](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.1...@fremtind/jkl-react-hooks@0.2.2) (2019-10-09)
**Note:** Version bump only for package @fremtind/jkl-react-hooks
## [0.2.1](https://github.com/fremtind/jokul/compare/@fremtind/jkl-react-hooks@0.2.0...@fremtind/jkl-react-hooks@0.2.1) (2019-09-26)
**Note:** Version bump only for package @fremtind/jkl-react-hooks
# 0.2.0 (2019-08-30)
### Bug Fixes
* **react-hooks:** add checks for document existence ([accbd3c](https://github.com/fremtind/jokul/commit/accbd3c))
* **react-hooks:** use correct event firing in tests ([3f74393](https://github.com/fremtind/jokul/commit/3f74393))
- **react-hooks:** add checks for document existence ([accbd3c](https://github.com/fremtind/jokul/commit/accbd3c))
- **react-hooks:** use correct event firing in tests ([3f74393](https://github.com/fremtind/jokul/commit/3f74393))
### Features
* **react-hooks:** add key listener hook ([9ba7417](https://github.com/fremtind/jokul/commit/9ba7417))
* **react-hooks:** extract animation hook into separate package ([706ad61](https://github.com/fremtind/jokul/commit/706ad61))
* **react-hooks,core:** move useClickOutside to react-hooks ([47626b7](https://github.com/fremtind/jokul/commit/47626b7))
- **react-hooks:** add key listener hook ([9ba7417](https://github.com/fremtind/jokul/commit/9ba7417))
- **react-hooks:** extract animation hook into separate package ([706ad61](https://github.com/fremtind/jokul/commit/706ad61))
- **react-hooks,core:** move useClickOutside to react-hooks ([47626b7](https://github.com/fremtind/jokul/commit/47626b7))
{
"name": "@fremtind/jkl-react-hooks",
"version": "1.0.0-alpha.11",
"version": "1.0.0",
"publishConfig": {

@@ -8,3 +8,3 @@ "access": "public"

"description": "Jøkul react button components",
"homepage": "https://fremtind.github.io/jokul/",
"homepage": "https://fremtind.github.io/jokul",
"keywords": [

@@ -34,8 +34,11 @@ "hooks",

"dev:style": "lerna exec --scope=@fremtind/jkl-button yarn build:watch",
"dev:js": "parcel example/index.html",
"dev:js": "parcel documentation/index.html",
"dev": "run-p dev:*"
},
"devDependencies": {
"@fremtind/browserslist-config-jkl": "^1.0.0-alpha.11"
"@fremtind/browserslist-config-jkl": "^0.4.14"
},
"dependencies": {
"@fremtind/jkl-core": "^4.0.0"
},
"peerDependencies": {

@@ -57,3 +60,3 @@ "@types/react": "^16.8.17",

],
"gitHead": "72d828b382d0df6d4201fa92c449bfd8e775bcd6"
"gitHead": "8934422f5b382e4b2a21aa886e566775390ecf28"
}

@@ -0,4 +1,21 @@

# [`@fremtind/jkl-react-hooks`](https://fremtind.github.io/jokul/react-hooks/documentation/hooks/)
## Beskrivelse
[Bruk og prinsipper](https://fremtind.github.io/jokul/react-hooks/documentation/hooks/).
## Kom i gang
[Lær hvordan du kan ta i bruk Jøkul](https://fremtind.github.io/jokul/developer/getting-started/)
## Bruk av React-pakken
### Installasjon
1. Installér pakken med `yarn add @fremtind/jkl-react-hooks` eller `npm i @fremtind/jkl-react-hooks`.
2. Importer React-pakken:
```js
import { useIntersectionObserver } from "@fremtind/jkl-react-hooks";
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc