huanpenguin-tippy-react 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tippy-react.umd.min.js","sources":["../src/utils.js","../src/forwardRef.js","../src/className-plugin.js","../src/util-hooks.js","../src/Tippy.js","../src/useSingleton.js","../src/index.js"],"sourcesContent":["export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'\n\nexport function preserveRef(ref, node) {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node)\n }\n if ({}.hasOwnProperty.call(ref, 'current')) {\n ref.current = node\n }\n }\n}\n\nexport function ssrSafeCreateDiv() {\n return isBrowser && document.createElement('div')\n}\n\nexport function toDataAttributes(attrs) {\n const dataAttrs = {\n 'data-placement': attrs.placement,\n }\n\n if (attrs.referenceHidden) {\n dataAttrs['data-reference-hidden'] = ''\n }\n\n if (attrs.escaped) {\n dataAttrs['data-escaped'] = ''\n }\n\n return dataAttrs\n}\n\nfunction deepEqual(x, y) {\n if (x === y) {\n return true\n } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {\n if (Object.keys(x).length !== Object.keys(y).length) {\n return false\n }\n\n for (const prop in x) {\n if (y.hasOwnProperty(prop)) {\n if (!deepEqual(x[prop], y[prop])) {\n return false\n }\n } else {\n return false\n }\n }\n\n return true\n } else {\n return false\n }\n}\n\nexport function uniqueByShape(arr) {\n const output = []\n\n arr.forEach((item) => {\n if (!output.find((outputItem) => deepEqual(item, outputItem))) {\n output.push(item)\n }\n })\n\n return output\n}\n\nexport function deepPreserveProps(instanceProps, componentProps) {\n return {\n ...componentProps,\n popperOptions: {\n ...instanceProps.popperOptions,\n ...componentProps.popperOptions,\n modifiers: uniqueByShape([\n ...(instanceProps.popperOptions?.modifiers || []),\n ...(componentProps.popperOptions?.modifiers || []),\n ]),\n },\n }\n}\n","import React, { cloneElement, forwardRef } from 'react'\n\nimport { preserveRef } from './utils'\n\nconst createTippyWrapper = (Tippy, defaultProps) =>\n forwardRef(function TippyWrapper({ children, ...props }, ref) {\n return (\n // If I spread them separately here, Babel adds the _extends ponyfill for\n // some reason\n <Tippy {...{ ...defaultProps, ...props }}>\n {children\n ? cloneElement(children, {\n ref(node) {\n preserveRef(ref, node)\n preserveRef(children.props?.ref, node)\n },\n })\n : null}\n </Tippy>\n )\n })\n\nexport default createTippyWrapper\n","function updateClassName(box, action, classNames) {\n classNames.split(/\\s+/).forEach((name) => {\n if (name) {\n box.classList[action](name)\n }\n })\n}\n\nexport const classNamePlugin = {\n name: 'className',\n defaultValue: '',\n fn(instance) {\n const box = instance.popper.firstElementChild\n const isDefaultRenderFn = () => !!instance.props.render?.$$tippy\n\n function add() {\n if (instance.props.className && !isDefaultRenderFn()) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n [\n '@tippyjs/react: Cannot use `className` prop in conjunction with',\n '`render` prop. Place the className on the element you are',\n 'rendering.',\n ].join(' '),\n )\n }\n\n return\n }\n\n updateClassName(box, 'add', instance.props.className)\n }\n\n function remove() {\n if (isDefaultRenderFn()) {\n updateClassName(box, 'remove', instance.props.className)\n }\n }\n\n return {\n onCreate: add,\n onBeforeUpdate: remove,\n onAfterUpdate: add,\n }\n },\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react'\n\nimport { isBrowser } from './utils'\n\nexport const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect\n\nexport function useMutableBox(initialValue) {\n // Using refs instead of state as it's recommended to not store imperative\n // values in state due to memory problems in React(?)\n const ref = useRef()\n\n if (!ref.current) {\n ref.current = typeof initialValue === 'function' ? initialValue() : initialValue\n }\n\n return ref.current\n}\n","import React, { cloneElement, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { classNamePlugin } from './className-plugin'\nimport { useIsomorphicLayoutEffect, useMutableBox } from './util-hooks'\nimport { deepPreserveProps, preserveRef, ssrSafeCreateDiv, toDataAttributes } from './utils'\n\nexport default function TippyGenerator(tippy) {\n function Tippy({\n children,\n content,\n visible,\n singleton,\n render,\n reference,\n disabled = false,\n ignoreAttributes = true,\n // Filter React development reserved props\n // added by babel-preset-react dev plugins:\n // transform-react-jsx-self and transform-react-jsx-source\n __source,\n __self,\n ...restOfNativeProps\n }) {\n const isControlledMode = visible !== undefined\n const isSingletonMode = singleton !== undefined\n\n const [mounted, setMounted] = useState(false)\n const [attrs, setAttrs] = useState({})\n const [singletonContent, setSingletonContent] = useState()\n const mutableBox = useMutableBox(() => ({\n container: ssrSafeCreateDiv(),\n renders: 1,\n }))\n\n const props = {\n ignoreAttributes,\n ...restOfNativeProps,\n content: mutableBox.container,\n }\n\n if (isControlledMode) {\n if (process.env.NODE_ENV !== 'production') {\n ;['trigger', 'hideOnClick', 'showOnCreate'].forEach((nativeStateProp) => {\n if (props[nativeStateProp] !== undefined) {\n console.warn(\n [\n `@tippyjs/react: Cannot specify \\`${nativeStateProp}\\` prop in`,\n `controlled mode (\\`visible\\` prop)`,\n ].join(' '),\n )\n }\n })\n }\n\n props.trigger = 'manual'\n props.hideOnClick = false\n }\n\n if (isSingletonMode) {\n disabled = true\n }\n\n let computedProps = props\n const plugins = props.plugins || []\n\n if (render) {\n computedProps = {\n ...props,\n plugins:\n isSingletonMode && singleton.data != null\n ? [\n ...plugins,\n {\n fn() {\n return {\n onTrigger(instance, event) {\n const node = singleton.data.children.find(\n ({ instance }) => instance.reference === event.currentTarget,\n )\n instance.state.$$activeSingletonInstance = node.instance\n setSingletonContent(node.content)\n },\n }\n },\n },\n ]\n : plugins,\n render: () => ({ popper: mutableBox.container }),\n }\n }\n\n const deps = [reference].concat(children ? [children.type] : [])\n\n // CREATE\n useIsomorphicLayoutEffect(() => {\n let element = reference\n if (reference && reference.hasOwnProperty('current')) {\n element = reference.current\n }\n\n const instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), {\n ...computedProps,\n plugins: [classNamePlugin, ...(props.plugins || [])],\n })\n\n mutableBox.instance = instance\n\n if (disabled) {\n instance.disable()\n }\n\n if (visible) {\n instance.show()\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance,\n content,\n props: computedProps,\n setSingletonContent,\n })\n }\n\n setMounted(true)\n\n return () => {\n instance.destroy()\n singleton?.cleanup(instance)\n }\n }, deps)\n\n // UPDATE\n useIsomorphicLayoutEffect(() => {\n // Prevent this effect from running on 1st render\n if (mutableBox.renders === 1) {\n mutableBox.renders++\n return\n }\n\n const { instance } = mutableBox\n\n instance.setProps(deepPreserveProps(instance.props, computedProps))\n\n // Fixes #264\n instance.popperInstance?.forceUpdate()\n\n if (disabled) {\n instance.disable()\n } else {\n instance.enable()\n }\n\n if (isControlledMode) {\n if (visible) {\n instance.show()\n } else {\n instance.hide()\n }\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance,\n content,\n props: computedProps,\n setSingletonContent,\n })\n }\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!render) {\n return\n }\n\n const { instance } = mutableBox\n\n instance.setProps({\n popperOptions: {\n ...instance.props.popperOptions,\n modifiers: [\n ...(instance.props.popperOptions?.modifiers || []).filter(\n ({ name }) => name !== '$$tippyReact',\n ),\n {\n name: '$$tippyReact',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({ state }) {\n const hideData = state.modifiersData?.hide\n\n // WARNING: this is a high-risk path that can cause an infinite\n // loop. This expression _must_ evaluate to false when required\n if (\n attrs.placement !== state.placement ||\n attrs.referenceHidden !== hideData?.isReferenceHidden ||\n attrs.escaped !== hideData?.hasPopperEscaped\n ) {\n setAttrs({\n placement: state.placement,\n referenceHidden: hideData?.isReferenceHidden,\n escaped: hideData?.hasPopperEscaped,\n })\n }\n\n state.attributes.popper = {}\n },\n },\n ],\n },\n })\n }, [attrs.placement, attrs.referenceHidden, attrs.escaped, ...deps])\n\n return (\n <>\n {children\n ? cloneElement(children, {\n ref(node) {\n mutableBox.ref = node\n preserveRef(children.props?.ref, node)\n },\n })\n : null}\n {mounted &&\n createPortal(\n render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content,\n mutableBox.container,\n )}\n </>\n )\n }\n\n return Tippy\n}\n","import { useMemo, useState } from 'react'\n\nimport { classNamePlugin } from './className-plugin'\nimport { useIsomorphicLayoutEffect, useMutableBox } from './util-hooks'\nimport { deepPreserveProps } from './utils'\n\nexport default function useSingletonGenerator(createSingleton) {\n return function useSingleton({ disabled = false, overrides = [] } = {}) {\n const [mounted, setMounted] = useState(false)\n const mutableBox = useMutableBox({\n children: [],\n renders: 1,\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!mounted) {\n setMounted(true)\n return\n }\n\n const { children, sourceData } = mutableBox\n\n if (!sourceData) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n [\n '@tippyjs/react: The `source` variable from `useSingleton()` has',\n 'not been passed to a <Tippy /> component.',\n ].join(' '),\n )\n }\n\n return\n }\n\n const instance = createSingleton(\n children.map((child) => child.instance),\n {\n ...sourceData.props,\n popperOptions: sourceData.instance.props.popperOptions,\n overrides,\n plugins: [classNamePlugin, ...(sourceData.props.plugins || [])],\n },\n )\n\n mutableBox.instance = instance\n\n if (disabled) {\n instance.disable()\n }\n\n return () => {\n instance.destroy()\n mutableBox.children = children.filter(({ instance }) => !instance.state.isDestroyed)\n }\n }, [mounted])\n\n useIsomorphicLayoutEffect(() => {\n if (!mounted) {\n return\n }\n\n if (mutableBox.renders === 1) {\n mutableBox.renders++\n return\n }\n\n const { children, instance, sourceData } = mutableBox\n\n if (!(instance && sourceData)) {\n return\n }\n\n const { content, ...props } = sourceData.props\n\n instance.setProps(\n deepPreserveProps(instance.props, {\n ...props,\n overrides,\n }),\n )\n\n instance.setInstances(children.map((child) => child.instance))\n\n if (disabled) {\n instance.disable()\n } else {\n instance.enable()\n }\n })\n\n return useMemo(() => {\n const source = {\n data: mutableBox,\n hook(data) {\n mutableBox.sourceData = data\n mutableBox.setSingletonContent = data.setSingletonContent\n },\n cleanup() {\n mutableBox.sourceData = null\n },\n }\n\n const target = {\n hook(data) {\n mutableBox.children = mutableBox.children.filter(({ instance }) => data.instance !== instance)\n mutableBox.children.push(data)\n\n if (\n mutableBox.instance?.state.isMounted &&\n mutableBox.instance?.state.$$activeSingletonInstance === data.instance\n ) {\n mutableBox.setSingletonContent?.(data.content)\n }\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map((child) => child.instance))\n }\n },\n cleanup(instance) {\n mutableBox.children = mutableBox.children.filter((data) => data.instance !== instance)\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map((child) => child.instance))\n }\n },\n }\n\n return [source, target]\n }, [])\n }\n}\n","import tippy, { createSingleton } from 'tippy.js'\n\nimport forwardRef from './forwardRef'\nimport TippyGenerator from './Tippy'\nimport useSingletonGenerator from './useSingleton'\n\nconst useSingleton = useSingletonGenerator(createSingleton)\n\nexport default forwardRef(TippyGenerator(tippy))\nexport { tippy, useSingleton }\n"],"names":["isBrowser","window","document","preserveRef","ref","node","hasOwnProperty","call","current","ssrSafeCreateDiv","createElement","uniqueByShape","arr","output","forEach","item","find","outputItem","deepEqual","x","y","Object","keys","length","prop","push","deepPreserveProps","instanceProps","componentProps","popperOptions","modifiers","createTippyWrapper","Tippy","defaultProps","forwardRef","children","props","cloneElement","_children$props","updateClassName","box","action","classNames","split","name","classList","classNamePlugin","defaultValue","fn","instance","popper","firstElementChild","isDefaultRenderFn","render","_instance$props$rende","$$tippy","add","className","onCreate","onBeforeUpdate","onAfterUpdate","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useMutableBox","initialValue","useRef","TippyGenerator","tippy","content","visible","singleton","reference","disabled","ignoreAttributes","restOfNativeProps","__source","__self","isControlledMode","undefined","isSingletonMode","useState","mounted","setMounted","attrs","setAttrs","singletonContent","setSingletonContent","mutableBox","container","renders","trigger","hideOnClick","computedProps","plugins","data","onTrigger","event","currentTarget","state","$$activeSingletonInstance","deps","concat","type","element","disable","show","hook","destroy","cleanup","setProps","popperInstance","forceUpdate","enable","hide","filter","enabled","phase","requires","hideData","modifiersData","_state$modifiersData","placement","referenceHidden","isReferenceHidden","escaped","hasPopperEscaped","attributes","React","createPortal","dataAttrs","toDataAttributes","useSingletonGenerator","createSingleton","overrides","sourceData","map","child","isDestroyed","setInstances","useMemo","isMounted","useSingleton"],"mappings":"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"}
@@ -0,0 +1,537 @@
1
+ import tippy, { createSingleton } from 'tippy.js/headless';
2
+ export { default as tippy } from 'tippy.js/headless';
3
+ import React, { forwardRef, cloneElement, useLayoutEffect, useEffect, useRef, useState, useMemo } from 'react';
4
+ import { createPortal } from 'react-dom';
5
+
6
+ function _objectWithoutPropertiesLoose(source, excluded) {
7
+ if (source == null) return {};
8
+ var target = {};
9
+ var sourceKeys = Object.keys(source);
10
+ var key, i;
11
+
12
+ for (i = 0; i < sourceKeys.length; i++) {
13
+ key = sourceKeys[i];
14
+ if (excluded.indexOf(key) >= 0) continue;
15
+ target[key] = source[key];
16
+ }
17
+
18
+ return target;
19
+ }
20
+
21
+ var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
22
+ function preserveRef(ref, node) {
23
+ if (ref) {
24
+ if (typeof ref === 'function') {
25
+ ref(node);
26
+ }
27
+
28
+ if ({}.hasOwnProperty.call(ref, 'current')) {
29
+ ref.current = node;
30
+ }
31
+ }
32
+ }
33
+ function ssrSafeCreateDiv() {
34
+ return isBrowser && document.createElement('div');
35
+ }
36
+ function toDataAttributes(attrs) {
37
+ var dataAttrs = {
38
+ 'data-placement': attrs.placement
39
+ };
40
+
41
+ if (attrs.referenceHidden) {
42
+ dataAttrs['data-reference-hidden'] = '';
43
+ }
44
+
45
+ if (attrs.escaped) {
46
+ dataAttrs['data-escaped'] = '';
47
+ }
48
+
49
+ return dataAttrs;
50
+ }
51
+
52
+ function deepEqual(x, y) {
53
+ if (x === y) {
54
+ return true;
55
+ } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {
56
+ if (Object.keys(x).length !== Object.keys(y).length) {
57
+ return false;
58
+ }
59
+
60
+ for (var prop in x) {
61
+ if (y.hasOwnProperty(prop)) {
62
+ if (!deepEqual(x[prop], y[prop])) {
63
+ return false;
64
+ }
65
+ } else {
66
+ return false;
67
+ }
68
+ }
69
+
70
+ return true;
71
+ } else {
72
+ return false;
73
+ }
74
+ }
75
+
76
+ function uniqueByShape(arr) {
77
+ var output = [];
78
+ arr.forEach(function (item) {
79
+ if (!output.find(function (outputItem) {
80
+ return deepEqual(item, outputItem);
81
+ })) {
82
+ output.push(item);
83
+ }
84
+ });
85
+ return output;
86
+ }
87
+ function deepPreserveProps(instanceProps, componentProps) {
88
+ var _instanceProps$popper, _componentProps$poppe;
89
+
90
+ return Object.assign({}, componentProps, {
91
+ popperOptions: Object.assign({}, instanceProps.popperOptions, componentProps.popperOptions, {
92
+ modifiers: uniqueByShape([].concat(((_instanceProps$popper = instanceProps.popperOptions) == null ? void 0 : _instanceProps$popper.modifiers) || [], ((_componentProps$poppe = componentProps.popperOptions) == null ? void 0 : _componentProps$poppe.modifiers) || []))
93
+ })
94
+ });
95
+ }
96
+
97
+ var createTippyWrapper = function createTippyWrapper(Tippy, defaultProps) {
98
+ return /*#__PURE__*/forwardRef(function TippyWrapper(_ref, _ref2) {
99
+ var children = _ref.children,
100
+ props = _objectWithoutPropertiesLoose(_ref, ["children"]);
101
+
102
+ return (
103
+ /*#__PURE__*/
104
+ // If I spread them separately here, Babel adds the _extends ponyfill for
105
+ // some reason
106
+ React.createElement(Tippy, Object.assign({}, defaultProps, props), children ? /*#__PURE__*/cloneElement(children, {
107
+ ref: function ref(node) {
108
+ var _children$props;
109
+
110
+ preserveRef(_ref2, node);
111
+ preserveRef((_children$props = children.props) == null ? void 0 : _children$props.ref, node);
112
+ }
113
+ }) : null)
114
+ );
115
+ });
116
+ };
117
+
118
+ function updateClassName(box, action, classNames) {
119
+ classNames.split(/\s+/).forEach(function (name) {
120
+ if (name) {
121
+ box.classList[action](name);
122
+ }
123
+ });
124
+ }
125
+
126
+ var classNamePlugin = {
127
+ name: 'className',
128
+ defaultValue: '',
129
+ fn: function fn(instance) {
130
+ var box = instance.popper.firstElementChild;
131
+
132
+ var isDefaultRenderFn = function isDefaultRenderFn() {
133
+ var _instance$props$rende;
134
+
135
+ return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
136
+ };
137
+
138
+ function add() {
139
+ if (instance.props.className && !isDefaultRenderFn()) {
140
+ if (process.env.NODE_ENV !== 'production') {
141
+ console.warn(['@tippyjs/react: Cannot use `className` prop in conjunction with', '`render` prop. Place the className on the element you are', 'rendering.'].join(' '));
142
+ }
143
+
144
+ return;
145
+ }
146
+
147
+ updateClassName(box, 'add', instance.props.className);
148
+ }
149
+
150
+ function remove() {
151
+ if (isDefaultRenderFn()) {
152
+ updateClassName(box, 'remove', instance.props.className);
153
+ }
154
+ }
155
+
156
+ return {
157
+ onCreate: add,
158
+ onBeforeUpdate: remove,
159
+ onAfterUpdate: add
160
+ };
161
+ }
162
+ };
163
+
164
+ var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
165
+ function useMutableBox(initialValue) {
166
+ // Using refs instead of state as it's recommended to not store imperative
167
+ // values in state due to memory problems in React(?)
168
+ var ref = useRef();
169
+
170
+ if (!ref.current) {
171
+ ref.current = typeof initialValue === 'function' ? initialValue() : initialValue;
172
+ }
173
+
174
+ return ref.current;
175
+ }
176
+
177
+ function TippyGenerator(tippy) {
178
+ function Tippy(_ref) {
179
+ var children = _ref.children,
180
+ content = _ref.content,
181
+ visible = _ref.visible,
182
+ singleton = _ref.singleton,
183
+ render = _ref.render,
184
+ reference = _ref.reference,
185
+ _ref$disabled = _ref.disabled,
186
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
187
+ _ref$ignoreAttributes = _ref.ignoreAttributes,
188
+ ignoreAttributes = _ref$ignoreAttributes === void 0 ? true : _ref$ignoreAttributes,
189
+ __source = _ref.__source,
190
+ __self = _ref.__self,
191
+ restOfNativeProps = _objectWithoutPropertiesLoose(_ref, ["children", "content", "visible", "singleton", "render", "reference", "disabled", "ignoreAttributes", "__source", "__self"]);
192
+
193
+ var isControlledMode = visible !== undefined;
194
+ var isSingletonMode = singleton !== undefined;
195
+
196
+ var _useState = useState(false),
197
+ mounted = _useState[0],
198
+ setMounted = _useState[1];
199
+
200
+ var _useState2 = useState({}),
201
+ attrs = _useState2[0],
202
+ setAttrs = _useState2[1];
203
+
204
+ var _useState3 = useState(),
205
+ singletonContent = _useState3[0],
206
+ setSingletonContent = _useState3[1];
207
+
208
+ var mutableBox = useMutableBox(function () {
209
+ return {
210
+ container: ssrSafeCreateDiv(),
211
+ renders: 1
212
+ };
213
+ });
214
+ var props = Object.assign({
215
+ ignoreAttributes: ignoreAttributes
216
+ }, restOfNativeProps, {
217
+ content: mutableBox.container
218
+ });
219
+
220
+ if (isControlledMode) {
221
+ if (process.env.NODE_ENV !== 'production') {
222
+ ['trigger', 'hideOnClick', 'showOnCreate'].forEach(function (nativeStateProp) {
223
+ if (props[nativeStateProp] !== undefined) {
224
+ console.warn(["@tippyjs/react: Cannot specify `" + nativeStateProp + "` prop in", "controlled mode (`visible` prop)"].join(' '));
225
+ }
226
+ });
227
+ }
228
+
229
+ props.trigger = 'manual';
230
+ props.hideOnClick = false;
231
+ }
232
+
233
+ if (isSingletonMode) {
234
+ disabled = true;
235
+ }
236
+
237
+ var computedProps = props;
238
+ var plugins = props.plugins || [];
239
+
240
+ if (render) {
241
+ computedProps = Object.assign({}, props, {
242
+ plugins: isSingletonMode && singleton.data != null ? [].concat(plugins, [{
243
+ fn: function fn() {
244
+ return {
245
+ onTrigger: function onTrigger(instance, event) {
246
+ var node = singleton.data.children.find(function (_ref2) {
247
+ var instance = _ref2.instance;
248
+ return instance.reference === event.currentTarget;
249
+ });
250
+ instance.state.$$activeSingletonInstance = node.instance;
251
+ setSingletonContent(node.content);
252
+ }
253
+ };
254
+ }
255
+ }]) : plugins,
256
+ render: function render() {
257
+ return {
258
+ popper: mutableBox.container
259
+ };
260
+ }
261
+ });
262
+ }
263
+
264
+ var deps = [reference].concat(children ? [children.type] : []); // CREATE
265
+
266
+ useIsomorphicLayoutEffect(function () {
267
+ var element = reference;
268
+
269
+ if (reference && reference.hasOwnProperty('current')) {
270
+ element = reference.current;
271
+ }
272
+
273
+ var instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), Object.assign({}, computedProps, {
274
+ plugins: [classNamePlugin].concat(props.plugins || [])
275
+ }));
276
+ mutableBox.instance = instance;
277
+
278
+ if (disabled) {
279
+ instance.disable();
280
+ }
281
+
282
+ if (visible) {
283
+ instance.show();
284
+ }
285
+
286
+ if (isSingletonMode) {
287
+ singleton.hook({
288
+ instance: instance,
289
+ content: content,
290
+ props: computedProps,
291
+ setSingletonContent: setSingletonContent
292
+ });
293
+ }
294
+
295
+ setMounted(true);
296
+ return function () {
297
+ instance.destroy();
298
+ singleton == null ? void 0 : singleton.cleanup(instance);
299
+ };
300
+ }, deps); // UPDATE
301
+
302
+ useIsomorphicLayoutEffect(function () {
303
+ var _instance$popperInsta;
304
+
305
+ // Prevent this effect from running on 1st render
306
+ if (mutableBox.renders === 1) {
307
+ mutableBox.renders++;
308
+ return;
309
+ }
310
+
311
+ var instance = mutableBox.instance;
312
+ instance.setProps(deepPreserveProps(instance.props, computedProps)); // Fixes #264
313
+
314
+ (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.forceUpdate();
315
+
316
+ if (disabled) {
317
+ instance.disable();
318
+ } else {
319
+ instance.enable();
320
+ }
321
+
322
+ if (isControlledMode) {
323
+ if (visible) {
324
+ instance.show();
325
+ } else {
326
+ instance.hide();
327
+ }
328
+ }
329
+
330
+ if (isSingletonMode) {
331
+ singleton.hook({
332
+ instance: instance,
333
+ content: content,
334
+ props: computedProps,
335
+ setSingletonContent: setSingletonContent
336
+ });
337
+ }
338
+ });
339
+ useIsomorphicLayoutEffect(function () {
340
+ var _instance$props$poppe;
341
+
342
+ if (!render) {
343
+ return;
344
+ }
345
+
346
+ var instance = mutableBox.instance;
347
+ instance.setProps({
348
+ popperOptions: Object.assign({}, instance.props.popperOptions, {
349
+ modifiers: [].concat((((_instance$props$poppe = instance.props.popperOptions) == null ? void 0 : _instance$props$poppe.modifiers) || []).filter(function (_ref3) {
350
+ var name = _ref3.name;
351
+ return name !== '$$tippyReact';
352
+ }), [{
353
+ name: '$$tippyReact',
354
+ enabled: true,
355
+ phase: 'beforeWrite',
356
+ requires: ['computeStyles'],
357
+ fn: function fn(_ref4) {
358
+ var _state$modifiersData;
359
+
360
+ var state = _ref4.state;
361
+ var hideData = (_state$modifiersData = state.modifiersData) == null ? void 0 : _state$modifiersData.hide; // WARNING: this is a high-risk path that can cause an infinite
362
+ // loop. This expression _must_ evaluate to false when required
363
+
364
+ if (attrs.placement !== state.placement || attrs.referenceHidden !== (hideData == null ? void 0 : hideData.isReferenceHidden) || attrs.escaped !== (hideData == null ? void 0 : hideData.hasPopperEscaped)) {
365
+ setAttrs({
366
+ placement: state.placement,
367
+ referenceHidden: hideData == null ? void 0 : hideData.isReferenceHidden,
368
+ escaped: hideData == null ? void 0 : hideData.hasPopperEscaped
369
+ });
370
+ }
371
+
372
+ state.attributes.popper = {};
373
+ }
374
+ }])
375
+ })
376
+ });
377
+ }, [attrs.placement, attrs.referenceHidden, attrs.escaped].concat(deps));
378
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/cloneElement(children, {
379
+ ref: function ref(node) {
380
+ var _children$props;
381
+
382
+ mutableBox.ref = node;
383
+ preserveRef((_children$props = children.props) == null ? void 0 : _children$props.ref, node);
384
+ }
385
+ }) : null, mounted && /*#__PURE__*/createPortal(render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content, mutableBox.container));
386
+ }
387
+
388
+ return Tippy;
389
+ }
390
+
391
+ function useSingletonGenerator(createSingleton) {
392
+ return function useSingleton(_temp) {
393
+ var _ref = _temp === void 0 ? {} : _temp,
394
+ _ref$disabled = _ref.disabled,
395
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
396
+ _ref$overrides = _ref.overrides,
397
+ overrides = _ref$overrides === void 0 ? [] : _ref$overrides;
398
+
399
+ var _useState = useState(false),
400
+ mounted = _useState[0],
401
+ setMounted = _useState[1];
402
+
403
+ var mutableBox = useMutableBox({
404
+ children: [],
405
+ renders: 1
406
+ });
407
+ useIsomorphicLayoutEffect(function () {
408
+ if (!mounted) {
409
+ setMounted(true);
410
+ return;
411
+ }
412
+
413
+ var children = mutableBox.children,
414
+ sourceData = mutableBox.sourceData;
415
+
416
+ if (!sourceData) {
417
+ if (process.env.NODE_ENV !== 'production') {
418
+ console.error(['@tippyjs/react: The `source` variable from `useSingleton()` has', 'not been passed to a <Tippy /> component.'].join(' '));
419
+ }
420
+
421
+ return;
422
+ }
423
+
424
+ var instance = createSingleton(children.map(function (child) {
425
+ return child.instance;
426
+ }), Object.assign({}, sourceData.props, {
427
+ popperOptions: sourceData.instance.props.popperOptions,
428
+ overrides: overrides,
429
+ plugins: [classNamePlugin].concat(sourceData.props.plugins || [])
430
+ }));
431
+ mutableBox.instance = instance;
432
+
433
+ if (disabled) {
434
+ instance.disable();
435
+ }
436
+
437
+ return function () {
438
+ instance.destroy();
439
+ mutableBox.children = children.filter(function (_ref2) {
440
+ var instance = _ref2.instance;
441
+ return !instance.state.isDestroyed;
442
+ });
443
+ };
444
+ }, [mounted]);
445
+ useIsomorphicLayoutEffect(function () {
446
+ if (!mounted) {
447
+ return;
448
+ }
449
+
450
+ if (mutableBox.renders === 1) {
451
+ mutableBox.renders++;
452
+ return;
453
+ }
454
+
455
+ var children = mutableBox.children,
456
+ instance = mutableBox.instance,
457
+ sourceData = mutableBox.sourceData;
458
+
459
+ if (!(instance && sourceData)) {
460
+ return;
461
+ }
462
+
463
+ var _sourceData$props = sourceData.props,
464
+ content = _sourceData$props.content,
465
+ props = _objectWithoutPropertiesLoose(_sourceData$props, ["content"]);
466
+
467
+ instance.setProps(deepPreserveProps(instance.props, Object.assign({}, props, {
468
+ overrides: overrides
469
+ })));
470
+ instance.setInstances(children.map(function (child) {
471
+ return child.instance;
472
+ }));
473
+
474
+ if (disabled) {
475
+ instance.disable();
476
+ } else {
477
+ instance.enable();
478
+ }
479
+ });
480
+ return useMemo(function () {
481
+ var source = {
482
+ data: mutableBox,
483
+ hook: function hook(data) {
484
+ mutableBox.sourceData = data;
485
+ mutableBox.setSingletonContent = data.setSingletonContent;
486
+ },
487
+ cleanup: function cleanup() {
488
+ mutableBox.sourceData = null;
489
+ }
490
+ };
491
+ var target = {
492
+ hook: function hook(data) {
493
+ var _mutableBox$instance, _mutableBox$instance2;
494
+
495
+ mutableBox.children = mutableBox.children.filter(function (_ref3) {
496
+ var instance = _ref3.instance;
497
+ return data.instance !== instance;
498
+ });
499
+ mutableBox.children.push(data);
500
+
501
+ if (((_mutableBox$instance = mutableBox.instance) == null ? void 0 : _mutableBox$instance.state.isMounted) && ((_mutableBox$instance2 = mutableBox.instance) == null ? void 0 : _mutableBox$instance2.state.$$activeSingletonInstance) === data.instance) {
502
+ mutableBox.setSingletonContent == null ? void 0 : mutableBox.setSingletonContent(data.content);
503
+ }
504
+
505
+ if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {
506
+ mutableBox.instance.setInstances(mutableBox.children.map(function (child) {
507
+ return child.instance;
508
+ }));
509
+ }
510
+ },
511
+ cleanup: function cleanup(instance) {
512
+ mutableBox.children = mutableBox.children.filter(function (data) {
513
+ return data.instance !== instance;
514
+ });
515
+
516
+ if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {
517
+ mutableBox.instance.setInstances(mutableBox.children.map(function (child) {
518
+ return child.instance;
519
+ }));
520
+ }
521
+ }
522
+ };
523
+ return [source, target];
524
+ }, []);
525
+ };
526
+ }
527
+
528
+ var useSingleton = /*#__PURE__*/useSingletonGenerator(createSingleton);
529
+ var headless = /*#__PURE__*/createTippyWrapper( /*#__PURE__*/TippyGenerator(tippy), {
530
+ render: function render() {
531
+ return '';
532
+ }
533
+ });
534
+
535
+ export default headless;
536
+ export { useSingleton };
537
+ //# sourceMappingURL=tippy-react-headless.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tippy-react-headless.esm.js","sources":["../../src/utils.js","../../src/forwardRef.js","../../src/className-plugin.js","../../src/util-hooks.js","../../src/Tippy.js","../../src/useSingleton.js","../../src/headless.js"],"sourcesContent":["export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'\n\nexport function preserveRef(ref, node) {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node)\n }\n if ({}.hasOwnProperty.call(ref, 'current')) {\n ref.current = node\n }\n }\n}\n\nexport function ssrSafeCreateDiv() {\n return isBrowser && document.createElement('div')\n}\n\nexport function toDataAttributes(attrs) {\n const dataAttrs = {\n 'data-placement': attrs.placement,\n }\n\n if (attrs.referenceHidden) {\n dataAttrs['data-reference-hidden'] = ''\n }\n\n if (attrs.escaped) {\n dataAttrs['data-escaped'] = ''\n }\n\n return dataAttrs\n}\n\nfunction deepEqual(x, y) {\n if (x === y) {\n return true\n } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {\n if (Object.keys(x).length !== Object.keys(y).length) {\n return false\n }\n\n for (const prop in x) {\n if (y.hasOwnProperty(prop)) {\n if (!deepEqual(x[prop], y[prop])) {\n return false\n }\n } else {\n return false\n }\n }\n\n return true\n } else {\n return false\n }\n}\n\nexport function uniqueByShape(arr) {\n const output = []\n\n arr.forEach((item) => {\n if (!output.find((outputItem) => deepEqual(item, outputItem))) {\n output.push(item)\n }\n })\n\n return output\n}\n\nexport function deepPreserveProps(instanceProps, componentProps) {\n return {\n ...componentProps,\n popperOptions: {\n ...instanceProps.popperOptions,\n ...componentProps.popperOptions,\n modifiers: uniqueByShape([\n ...(instanceProps.popperOptions?.modifiers || []),\n ...(componentProps.popperOptions?.modifiers || []),\n ]),\n },\n }\n}\n","import React, { cloneElement, forwardRef } from 'react'\n\nimport { preserveRef } from './utils'\n\nconst createTippyWrapper = (Tippy, defaultProps) =>\n forwardRef(function TippyWrapper({ children, ...props }, ref) {\n return (\n // If I spread them separately here, Babel adds the _extends ponyfill for\n // some reason\n <Tippy {...{ ...defaultProps, ...props }}>\n {children\n ? cloneElement(children, {\n ref(node) {\n preserveRef(ref, node)\n preserveRef(children.props?.ref, node)\n },\n })\n : null}\n </Tippy>\n )\n })\n\nexport default createTippyWrapper\n","function updateClassName(box, action, classNames) {\n classNames.split(/\\s+/).forEach((name) => {\n if (name) {\n box.classList[action](name)\n }\n })\n}\n\nexport const classNamePlugin = {\n name: 'className',\n defaultValue: '',\n fn(instance) {\n const box = instance.popper.firstElementChild\n const isDefaultRenderFn = () => !!instance.props.render?.$$tippy\n\n function add() {\n if (instance.props.className && !isDefaultRenderFn()) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n [\n '@tippyjs/react: Cannot use `className` prop in conjunction with',\n '`render` prop. Place the className on the element you are',\n 'rendering.',\n ].join(' '),\n )\n }\n\n return\n }\n\n updateClassName(box, 'add', instance.props.className)\n }\n\n function remove() {\n if (isDefaultRenderFn()) {\n updateClassName(box, 'remove', instance.props.className)\n }\n }\n\n return {\n onCreate: add,\n onBeforeUpdate: remove,\n onAfterUpdate: add,\n }\n },\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react'\n\nimport { isBrowser } from './utils'\n\nexport const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect\n\nexport function useMutableBox(initialValue) {\n // Using refs instead of state as it's recommended to not store imperative\n // values in state due to memory problems in React(?)\n const ref = useRef()\n\n if (!ref.current) {\n ref.current = typeof initialValue === 'function' ? initialValue() : initialValue\n }\n\n return ref.current\n}\n","import React, { cloneElement, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { classNamePlugin } from './className-plugin'\nimport { useIsomorphicLayoutEffect, useMutableBox } from './util-hooks'\nimport { deepPreserveProps, preserveRef, ssrSafeCreateDiv, toDataAttributes } from './utils'\n\nexport default function TippyGenerator(tippy) {\n function Tippy({\n children,\n content,\n visible,\n singleton,\n render,\n reference,\n disabled = false,\n ignoreAttributes = true,\n // Filter React development reserved props\n // added by babel-preset-react dev plugins:\n // transform-react-jsx-self and transform-react-jsx-source\n __source,\n __self,\n ...restOfNativeProps\n }) {\n const isControlledMode = visible !== undefined\n const isSingletonMode = singleton !== undefined\n\n const [mounted, setMounted] = useState(false)\n const [attrs, setAttrs] = useState({})\n const [singletonContent, setSingletonContent] = useState()\n const mutableBox = useMutableBox(() => ({\n container: ssrSafeCreateDiv(),\n renders: 1,\n }))\n\n const props = {\n ignoreAttributes,\n ...restOfNativeProps,\n content: mutableBox.container,\n }\n\n if (isControlledMode) {\n if (process.env.NODE_ENV !== 'production') {\n ;['trigger', 'hideOnClick', 'showOnCreate'].forEach((nativeStateProp) => {\n if (props[nativeStateProp] !== undefined) {\n console.warn(\n [\n `@tippyjs/react: Cannot specify \\`${nativeStateProp}\\` prop in`,\n `controlled mode (\\`visible\\` prop)`,\n ].join(' '),\n )\n }\n })\n }\n\n props.trigger = 'manual'\n props.hideOnClick = false\n }\n\n if (isSingletonMode) {\n disabled = true\n }\n\n let computedProps = props\n const plugins = props.plugins || []\n\n if (render) {\n computedProps = {\n ...props,\n plugins:\n isSingletonMode && singleton.data != null\n ? [\n ...plugins,\n {\n fn() {\n return {\n onTrigger(instance, event) {\n const node = singleton.data.children.find(\n ({ instance }) => instance.reference === event.currentTarget,\n )\n instance.state.$$activeSingletonInstance = node.instance\n setSingletonContent(node.content)\n },\n }\n },\n },\n ]\n : plugins,\n render: () => ({ popper: mutableBox.container }),\n }\n }\n\n const deps = [reference].concat(children ? [children.type] : [])\n\n // CREATE\n useIsomorphicLayoutEffect(() => {\n let element = reference\n if (reference && reference.hasOwnProperty('current')) {\n element = reference.current\n }\n\n const instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), {\n ...computedProps,\n plugins: [classNamePlugin, ...(props.plugins || [])],\n })\n\n mutableBox.instance = instance\n\n if (disabled) {\n instance.disable()\n }\n\n if (visible) {\n instance.show()\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance,\n content,\n props: computedProps,\n setSingletonContent,\n })\n }\n\n setMounted(true)\n\n return () => {\n instance.destroy()\n singleton?.cleanup(instance)\n }\n }, deps)\n\n // UPDATE\n useIsomorphicLayoutEffect(() => {\n // Prevent this effect from running on 1st render\n if (mutableBox.renders === 1) {\n mutableBox.renders++\n return\n }\n\n const { instance } = mutableBox\n\n instance.setProps(deepPreserveProps(instance.props, computedProps))\n\n // Fixes #264\n instance.popperInstance?.forceUpdate()\n\n if (disabled) {\n instance.disable()\n } else {\n instance.enable()\n }\n\n if (isControlledMode) {\n if (visible) {\n instance.show()\n } else {\n instance.hide()\n }\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance,\n content,\n props: computedProps,\n setSingletonContent,\n })\n }\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!render) {\n return\n }\n\n const { instance } = mutableBox\n\n instance.setProps({\n popperOptions: {\n ...instance.props.popperOptions,\n modifiers: [\n ...(instance.props.popperOptions?.modifiers || []).filter(\n ({ name }) => name !== '$$tippyReact',\n ),\n {\n name: '$$tippyReact',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({ state }) {\n const hideData = state.modifiersData?.hide\n\n // WARNING: this is a high-risk path that can cause an infinite\n // loop. This expression _must_ evaluate to false when required\n if (\n attrs.placement !== state.placement ||\n attrs.referenceHidden !== hideData?.isReferenceHidden ||\n attrs.escaped !== hideData?.hasPopperEscaped\n ) {\n setAttrs({\n placement: state.placement,\n referenceHidden: hideData?.isReferenceHidden,\n escaped: hideData?.hasPopperEscaped,\n })\n }\n\n state.attributes.popper = {}\n },\n },\n ],\n },\n })\n }, [attrs.placement, attrs.referenceHidden, attrs.escaped, ...deps])\n\n return (\n <>\n {children\n ? cloneElement(children, {\n ref(node) {\n mutableBox.ref = node\n preserveRef(children.props?.ref, node)\n },\n })\n : null}\n {mounted &&\n createPortal(\n render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content,\n mutableBox.container,\n )}\n </>\n )\n }\n\n return Tippy\n}\n","import { useMemo, useState } from 'react'\n\nimport { classNamePlugin } from './className-plugin'\nimport { useIsomorphicLayoutEffect, useMutableBox } from './util-hooks'\nimport { deepPreserveProps } from './utils'\n\nexport default function useSingletonGenerator(createSingleton) {\n return function useSingleton({ disabled = false, overrides = [] } = {}) {\n const [mounted, setMounted] = useState(false)\n const mutableBox = useMutableBox({\n children: [],\n renders: 1,\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!mounted) {\n setMounted(true)\n return\n }\n\n const { children, sourceData } = mutableBox\n\n if (!sourceData) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n [\n '@tippyjs/react: The `source` variable from `useSingleton()` has',\n 'not been passed to a <Tippy /> component.',\n ].join(' '),\n )\n }\n\n return\n }\n\n const instance = createSingleton(\n children.map((child) => child.instance),\n {\n ...sourceData.props,\n popperOptions: sourceData.instance.props.popperOptions,\n overrides,\n plugins: [classNamePlugin, ...(sourceData.props.plugins || [])],\n },\n )\n\n mutableBox.instance = instance\n\n if (disabled) {\n instance.disable()\n }\n\n return () => {\n instance.destroy()\n mutableBox.children = children.filter(({ instance }) => !instance.state.isDestroyed)\n }\n }, [mounted])\n\n useIsomorphicLayoutEffect(() => {\n if (!mounted) {\n return\n }\n\n if (mutableBox.renders === 1) {\n mutableBox.renders++\n return\n }\n\n const { children, instance, sourceData } = mutableBox\n\n if (!(instance && sourceData)) {\n return\n }\n\n const { content, ...props } = sourceData.props\n\n instance.setProps(\n deepPreserveProps(instance.props, {\n ...props,\n overrides,\n }),\n )\n\n instance.setInstances(children.map((child) => child.instance))\n\n if (disabled) {\n instance.disable()\n } else {\n instance.enable()\n }\n })\n\n return useMemo(() => {\n const source = {\n data: mutableBox,\n hook(data) {\n mutableBox.sourceData = data\n mutableBox.setSingletonContent = data.setSingletonContent\n },\n cleanup() {\n mutableBox.sourceData = null\n },\n }\n\n const target = {\n hook(data) {\n mutableBox.children = mutableBox.children.filter(({ instance }) => data.instance !== instance)\n mutableBox.children.push(data)\n\n if (\n mutableBox.instance?.state.isMounted &&\n mutableBox.instance?.state.$$activeSingletonInstance === data.instance\n ) {\n mutableBox.setSingletonContent?.(data.content)\n }\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map((child) => child.instance))\n }\n },\n cleanup(instance) {\n mutableBox.children = mutableBox.children.filter((data) => data.instance !== instance)\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map((child) => child.instance))\n }\n },\n }\n\n return [source, target]\n }, [])\n }\n}\n","import tippy, { createSingleton } from 'tippy.js/headless'\n\nimport forwardRef from './forwardRef'\nimport TippyGenerator from './Tippy'\nimport useSingletonGenerator from './useSingleton'\n\nconst useSingleton = useSingletonGenerator(createSingleton)\n\nexport default forwardRef(TippyGenerator(tippy), { render: () => '' })\nexport { tippy, useSingleton }\n"],"names":["isBrowser","window","document","preserveRef","ref","node","hasOwnProperty","call","current","ssrSafeCreateDiv","createElement","toDataAttributes","attrs","dataAttrs","placement","referenceHidden","escaped","deepEqual","x","y","Object","keys","length","prop","uniqueByShape","arr","output","forEach","item","find","outputItem","push","deepPreserveProps","instanceProps","componentProps","popperOptions","modifiers","createTippyWrapper","Tippy","defaultProps","forwardRef","TippyWrapper","children","props","cloneElement","updateClassName","box","action","classNames","split","name","classList","classNamePlugin","defaultValue","fn","instance","popper","firstElementChild","isDefaultRenderFn","render","$$tippy","add","className","process","env","NODE_ENV","console","warn","join","remove","onCreate","onBeforeUpdate","onAfterUpdate","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useMutableBox","initialValue","useRef","TippyGenerator","tippy","content","visible","singleton","reference","disabled","ignoreAttributes","__source","__self","restOfNativeProps","isControlledMode","undefined","isSingletonMode","useState","mounted","setMounted","setAttrs","singletonContent","setSingletonContent","mutableBox","container","renders","nativeStateProp","trigger","hideOnClick","computedProps","plugins","data","onTrigger","event","currentTarget","state","$$activeSingletonInstance","deps","concat","type","element","disable","show","hook","destroy","cleanup","setProps","popperInstance","forceUpdate","enable","hide","filter","enabled","phase","requires","hideData","modifiersData","isReferenceHidden","hasPopperEscaped","attributes","createPortal","useSingletonGenerator","createSingleton","useSingleton","overrides","sourceData","error","map","child","isDestroyed","setInstances","useMemo","source","target","isMounted"],"mappings":"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"}