1import "./vendors/tippy.js?v=2.2.2.0"; 2import "./vendors/popper.js?v=2.2.2.0"; 3import { getRequiredElement, registerDisconnectCleanup, unregisterDisconnectCleanup } from "./utilities.js?v=2.2.2.0"; 4 5const _instances = []; 6 7export function initialize(element, elementId, options) { 8 element = getRequiredElement(element, elementId); 9 10 if (!element) 11 return; 12 13 const triggerTarget = options.triggerTargetId ? document.getElementById(options.triggerTargetId) : null; 14 15 const appendTo = determineAppendTo(options.appendTo); 16 17 const defaultOptions = { 18 theme: options.theme || 'blazorise', 19 content: options.text, 20 placement: options.placement, 21 maxWidth: options.maxWidth ? options.maxWidth : options.multiline ? "15rem" : null, 22 duration: options.fade ? [options.fadeDuration, options.fadeDuration] : [0, 0], 23 arrow: options.showArrow, 24 allowHTML: true, 25 trigger: options.trigger, 26 triggerTarget: triggerTarget, 27 zIndex: options.zIndex, 28 interactive: options.interactive, 29 zIndex: options.zIndex || 9999, 30 appendTo: appendTo, 31 delay: [options.delay.show, options.delay.hide], 32 aria: { content: "describedby" }, 33 }; 34 35 const alwaysActiveOptions = options.alwaysActive 36 ? { 37 showOnCreate: true, 38 hideOnClick: false, 39 trigger: "manual" 40 } : {}; 41 42 const tippyInstance = tippy(element, Object.assign({}, defaultOptions, alwaysActiveOptions)); 43 44 if (options.text) { 45 tippyInstance.enable(); 46 } 47 else { 48 tippyInstance.disable(); 49 } 50 51 _instances[elementId] = { 52 tippy: tippyInstance, 53 disconnectCleanupId: registerDisconnectCleanup(element, () => destroy(null, elementId, false)) 54 }; 55 56 return tippyInstance; 57} 58 59export function destroy(element, elementId, unregisterCleanup = true) { 60 const instances = _instances || {}; 61 const instance = instances[elementId]; 62 63 if (instance) { 64 if (unregisterCleanup) { 65 unregisterDisconnectCleanup(instance.disconnectCleanupId); 66 } 67 68 if (instance.tippy) { 69 instance.tippy.destroy(); 70 } 71 72 delete instances[elementId]; 73 } 74} 75 76export function updateContent(element, elementId, content) { 77 const instance = _instances[elementId]?.tippy; 78 79 if (instance) { 80 instance.setContent(content); 81 82 if (content) { 83 instance.enable(); 84 } 85 else { 86 instance.disable(); 87 } 88 } 89} 90 91function determineAppendTo(value) { 92 if (!value || value === "body") { 93 return () => document.body; 94 } 95 96 if (value === "parent") 97 return "parent"; 98 else if (value.length > 0 && value[0] === "#") 99 return document.getElementById(value); 100 101 return () => document.body; 102}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.