@measured/puck-plugin-heading-analyzer 0.14.2-canary.c4a66ad → 0.14.2-canary.e529e85
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.
- package/dist/index.js +1472 -49
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -34978,36 +34978,33 @@ function querySelectorAll(parentNode, selector) {
|
|
34978
34978
|
function getOptions(shared2, fromBinding) {
|
34979
34979
|
return __spreadValues(__spreadValues({}, shared2), fromBinding);
|
34980
34980
|
}
|
34981
|
-
function bindEvent(
|
34981
|
+
function bindEvent(win, binding, options) {
|
34982
34982
|
let timer;
|
34983
|
-
if (
|
34983
|
+
if (!loaded) {
|
34984
34984
|
timer = setInterval(() => {
|
34985
|
-
|
34986
|
-
|
34987
|
-
|
34988
|
-
clearInterval(timer);
|
34985
|
+
if (win.document.readyState === "complete") {
|
34986
|
+
win.addEventListener(binding.eventName, binding.fn, options);
|
34987
|
+
loaded = true;
|
34989
34988
|
}
|
34990
34989
|
}, 100);
|
34991
|
-
|
34990
|
+
} else {
|
34991
|
+
win.addEventListener(binding.eventName, binding.fn, options);
|
34992
34992
|
}
|
34993
|
-
const win = getWin(el);
|
34994
|
-
win == null ? void 0 : win.addEventListener(binding.eventName, binding.fn, options);
|
34995
34993
|
return timer;
|
34996
34994
|
}
|
34997
34995
|
function bindEvents(el, bindings, sharedOptions) {
|
34998
34996
|
const unbindings = bindings.flatMap((binding) => {
|
34999
34997
|
const iframes = querySelectorAll(window.document, "[data-rfd-iframe]");
|
35000
|
-
const
|
35001
|
-
return
|
35002
|
-
if (!
|
34998
|
+
const windows = [el, ...iframes.map((iframe) => iframe.contentWindow)];
|
34999
|
+
return windows.map((win) => {
|
35000
|
+
if (!win)
|
35003
35001
|
return function unbind() {
|
35004
35002
|
};
|
35005
35003
|
const options = getOptions(sharedOptions, binding.options);
|
35006
|
-
const timer = bindEvent(
|
35004
|
+
const timer = bindEvent(win, binding, options);
|
35007
35005
|
return function unbind() {
|
35008
35006
|
clearInterval(timer);
|
35009
|
-
|
35010
|
-
win == null ? void 0 : win.removeEventListener(binding.eventName, binding.fn, options);
|
35007
|
+
win.removeEventListener(binding.eventName, binding.fn, options);
|
35011
35008
|
};
|
35012
35009
|
});
|
35013
35010
|
});
|
@@ -35207,6 +35204,26 @@ function getFurthestAway({
|
|
35207
35204
|
}).sort((a2, b) => b.distance - a2.distance);
|
35208
35205
|
return sorted[0] ? sorted[0].id : null;
|
35209
35206
|
}
|
35207
|
+
function normalizeFamilies(pageBorderBox, candidates) {
|
35208
|
+
const families = candidates.reduce((acc, candidate) => {
|
35209
|
+
var _a3;
|
35210
|
+
const familyName = ((_a3 = candidate.parents[0]) == null ? void 0 : _a3.id) || candidate.descriptor.id;
|
35211
|
+
const family = acc[familyName] || [];
|
35212
|
+
const generation = candidate.parents.length;
|
35213
|
+
family[generation] = [...family[generation] || [], candidate];
|
35214
|
+
return __spreadProps(__spreadValues({}, acc), {
|
35215
|
+
[familyName]: family
|
35216
|
+
});
|
35217
|
+
}, {});
|
35218
|
+
return Object.keys(families).map((familyName) => {
|
35219
|
+
const family = families[familyName].flat();
|
35220
|
+
const reversedFamily = [...family].reverse();
|
35221
|
+
const chosenMember = reversedFamily.find((member) => {
|
35222
|
+
return pageBorderBox.center.x < member.page.borderBox.right && pageBorderBox.center.x > member.page.borderBox.left && pageBorderBox.center.y > member.page.borderBox.top && pageBorderBox.center.y < member.page.borderBox.bottom;
|
35223
|
+
});
|
35224
|
+
return chosenMember || family[0];
|
35225
|
+
});
|
35226
|
+
}
|
35210
35227
|
function getDroppableOver({
|
35211
35228
|
pageBorderBox,
|
35212
35229
|
draggable: draggable2,
|
@@ -35247,10 +35264,14 @@ function getDroppableOver({
|
|
35247
35264
|
if (candidates.length === 1) {
|
35248
35265
|
return candidates[0].descriptor.id;
|
35249
35266
|
}
|
35267
|
+
const normalizedCandidates = normalizeFamilies(pageBorderBox, candidates);
|
35268
|
+
if (normalizedCandidates.length === 1) {
|
35269
|
+
return normalizedCandidates[0].descriptor.id;
|
35270
|
+
}
|
35250
35271
|
return getFurthestAway({
|
35251
35272
|
pageBorderBox,
|
35252
35273
|
draggable: draggable2,
|
35253
|
-
candidates
|
35274
|
+
candidates: normalizedCandidates
|
35254
35275
|
});
|
35255
35276
|
}
|
35256
35277
|
function getIsDisplaced({
|
@@ -37621,7 +37642,7 @@ function getBody() {
|
|
37621
37642
|
!document.body ? process.env.NODE_ENV !== "production" ? invariant2(false, "document.body is not ready") : invariant2(false) : void 0;
|
37622
37643
|
return document.body;
|
37623
37644
|
}
|
37624
|
-
var import_react5, import_react_dom2, isProduction$1, spacesAndTabs, lineStartWithSpaces, clean$2, getDevMessage, getFormattedMessage, isDisabledFlag, warning2, error,
|
37645
|
+
var import_react5, import_react_dom2, isProduction$1, spacesAndTabs, lineStartWithSpaces, clean$2, getDevMessage, getFormattedMessage, isDisabledFlag, warning2, error, loaded, isProduction2, prefix$1, RbdInvariant, ErrorBoundary, dragHandleUsageInstructions, position, onDragStart, withLocation, withCombine, onDragUpdate, returnedToStart, onDragEnd, preset, preset$1, origin, add, subtract, isEqual$1, negate, patch, distance2, closest$1, apply, executeClip, offsetByPosition, getCorners, noSpacing2, scroll$1, increase, clip2, getSubject, scrollDroppable, toDroppableMap, toDraggableMap, toDroppableList, toDraggableList, getDraggablesInsideDroppable, removeDraggableFromList, moveToNextCombine, isHomeOf, noDisplacedBy, emptyGroups, noImpact, noImpact$1, isWithin, isPartiallyVisibleThroughFrame, isTotallyVisibleThroughFrame, vertical, horizontal, isTotallyVisibleThroughFrameOnAxis, getDroppableDisplaced, isVisibleInDroppable, isVisibleInViewport, isVisible$1, isPartiallyVisible, isTotallyVisible, isTotallyVisibleOnAxis, getShouldAnimate, fromCombine, fromReorder, moveToNextIndex, getCombinedItemDisplacement, whenCombining, distanceFromStartToBorderBoxCenter, distanceFromEndToBorderBoxCenter, getCrossAxisBorderBoxCenter, goAfter, goBefore, goIntoStart, whenReordering, withDroppableDisplacement, getResultWithoutDroppableDisplacement, getPageBorderBoxCenterFromImpact, scrollViewport, speculativelyIncrease, withViewportDisplacement, getClientFromPageBorderBoxCenter, isTotallyVisibleInNewLocation, moveToNextPlace, getKnownActive, getBestCrossAxisDroppable, getCurrentPageBorderBoxCenter, getCurrentPageBorderBox, getClosestDraggable, getDisplacedBy, getRequiredGrowthForPlaceholder, withMaxScroll, addPlaceholder, removePlaceholder, moveToNewDroppable, moveCrossAxis, whatIsDraggedOver, getDroppableOver$1, moveInDirection, offsetRectByPosition, withDroppableScroll, getReorderImpact, combineThresholdDivisor, getCombineImpact, getDragImpact, patchDroppableMap, clearUnusedPlaceholder, recomputePlaceholders, update, recompute, getClientBorderBoxCenter, refreshSnap, getHomeLocation, getLiftEffect, patchDimensionMap, start, finish, offsetDraggable, getFrame, adjustAdditionsForScrollChanges, timingsKey, publishWhileDraggingInVirtual, isSnapping, postDroppableChange, idle$2, reducer, beforeInitialCapture, lift$1, initialPublish, publishWhileDragging, collectionStarting, updateDroppableScroll, updateDroppableIsEnabled, updateDroppableIsCombineEnabled, move, moveByWindowScroll, updateViewportMaxScroll, moveUp, moveDown, moveRight, moveLeft, flush, animateDrop, completeDrop, drop$1, dropPending, dropAnimationFinished, lift, style, curves, combine, timings, outOfTheWayTiming, transitions, moveTo, transforms, minDropTime, maxDropTime, dropTimeRange, maxDropTimeAtDistance, cancelDropModifier, getDropDuration, getNewHomeClientOffset, getDropImpact, dropMiddleware, drop, getWindowScroll3, shouldEnd, scrollListener, scrollListener$1, getExpiringAnnounce, getAsyncMarshal, areLocationsEqual, isCombineEqual, isCriticalEqual, withTimings, getDragStart, getPublisher, responders, dropAnimationFinishMiddleware, dropAnimationFinish, dropAnimationFlushOnScrollMiddleware, dropAnimationFlushOnScroll, dimensionMarshalStopper, focus, shouldStop, autoScroll, pendingDrop, pendingDrop$1, composeEnhancers, createStore2, clean$1, getMaxScroll, getDocumentElement, getMaxWindowScroll, getViewport, getInitialPublish, createDimensionMarshal, canStartDrag, scrollWindow, getScrollableDroppables, getScrollableDroppableOver, getBestScrollableDroppable, defaultAutoScrollerOptions, getDistanceThresholds, getPercentage, minScroll, getValueFromDistance, dampenValueByTime, getValue, getScrollOnAxis, adjustForSizeLimits, clean, getScroll$1, smallestSigned, getOverlap, canPartiallyScroll, canScrollWindow, getWindowOverlap, canScrollDroppable, getDroppableOverlap, getWindowScrollChange, getDroppableScrollChange, iframeCache, createCol, matrixPattern, getMatrix, getOrigin, findNearestTransform, defaultTransform, getTransform, applyTransformPoint, applyTransformRect, applyTransformSpacing, applyTransformBox, resetToOrigin, getIframeScroll, scroll, createFluidScroller, createJumpScroller, createAutoScroller, prefix2, dragHandle, draggable, droppable, scrollContainer, makeGetSelector, getStyles, noPointerEvents, getStyles$1, useIsomorphicLayoutEffect2, useLayoutEffect2, getHead, createStyleEl, alwaysDataAttr, dynamicDataAttr, getWindowFromEl, dragHandleCache, StoreContext, getBodyElement, visuallyHidden, visuallyHidden$1, getId, count$1, defaults, useUniqueId$1, AppContext, peerDependencies, semver, getVersion, isSatisfied, checkReactVersion, suffix, checkDoctype, tab, enter, escape, space, pageUp, pageDown, end, home, arrowLeft, arrowUp, arrowRight, arrowDown, preventedKeys, preventStandardKeyEvents, supportedEventName, supportedPageVisibilityEventName, primaryButton, sloppyClickThreshold, idle$1, scrollJumpKeys, idle, timeForLongPress, forcePressThreshold, interactiveTagNames, getBorderBoxCenterPosition, supportedMatchesName, defaultSensors, createResponders, createAutoScrollerOptions, count, useUniqueContextId$1, zIndexOptions, getDraggingTransition, getDraggingOpacity, getShouldDraggingAnimate, applyOffsetBox, DroppableContext, Draggable, Draggable$1, isStrictEqual, whatIsDraggedOverFromResult, getCombineWithFromResult, getCombineWithFromImpact, atRest, makeMapStateToProps$1, mapDispatchToProps$1, ConnectedDraggable, ConnectedDraggable$1, getScroll, isEqual2, isScroll, isAuto, isVisible, isEither, isBoth, isElementScrollable, isBodyScrollable, getClosestScrollable, getClosestScrollable$1, getIsFixed, getEnv, getDroppableDimension, getClient, getParents, getDimension, immediate, delayed, getListenerOptions, getScrollable, getClosestScrollableFromDrag, empty, getSize, getStyle, Placeholder, Placeholder$1, shared, standard, virtual, AnimateInOut, Droppable, Droppable$1, defaultProps, attachDefaultPropsToOwnProps, isMatchingType, getDraggable, makeMapStateToProps, mapDispatchToProps, ConnectedDroppable, ConnectedDroppable$1;
|
37625
37646
|
var init_dnd_esm = __esm({
|
37626
37647
|
"../../node_modules/@measured/dnd/dist/dnd.esm.js"() {
|
37627
37648
|
init_react_import();
|
@@ -37650,13 +37671,7 @@ var init_dnd_esm = __esm({
|
|
37650
37671
|
isDisabledFlag = "__@hello-pangea/dnd-disable-dev-warnings";
|
37651
37672
|
warning2 = log.bind(null, "warn");
|
37652
37673
|
error = log.bind(null, "error");
|
37653
|
-
|
37654
|
-
let win = el;
|
37655
|
-
if (el.nodeName === "IFRAME") {
|
37656
|
-
win = el.contentWindow;
|
37657
|
-
}
|
37658
|
-
return win;
|
37659
|
-
};
|
37674
|
+
loaded = false;
|
37660
37675
|
isProduction2 = process.env.NODE_ENV === "production";
|
37661
37676
|
prefix$1 = "Invariant failed";
|
37662
37677
|
RbdInvariant = class extends Error {
|
@@ -41996,7 +42011,8 @@ var init_dnd_esm = __esm({
|
|
41996
42011
|
client,
|
41997
42012
|
page,
|
41998
42013
|
closest: closest2,
|
41999
|
-
transform
|
42014
|
+
transform,
|
42015
|
+
parents
|
42000
42016
|
}) => {
|
42001
42017
|
const frame = (() => {
|
42002
42018
|
if (!closest2) {
|
@@ -42045,7 +42061,8 @@ var init_dnd_esm = __esm({
|
|
42045
42061
|
page,
|
42046
42062
|
frame,
|
42047
42063
|
subject,
|
42048
|
-
transform
|
42064
|
+
transform,
|
42065
|
+
parents
|
42049
42066
|
};
|
42050
42067
|
return dimension;
|
42051
42068
|
};
|
@@ -42082,6 +42099,27 @@ var init_dnd_esm = __esm({
|
|
42082
42099
|
});
|
42083
42100
|
return client;
|
42084
42101
|
};
|
42102
|
+
getParents = (ref2) => {
|
42103
|
+
var _a3;
|
42104
|
+
const contextId = ref2.getAttribute(`${prefix2}-droppable-context-id`);
|
42105
|
+
const parentDescriptors = [];
|
42106
|
+
if (!contextId)
|
42107
|
+
return [];
|
42108
|
+
let currentEl = ref2;
|
42109
|
+
while (currentEl) {
|
42110
|
+
currentEl = (_a3 = currentEl.parentElement) == null ? void 0 : _a3.closest(`[${prefix2}-droppable-context-id="${contextId}"]`);
|
42111
|
+
const id = currentEl == null ? void 0 : currentEl.getAttribute(`${prefix2}-droppable-id`);
|
42112
|
+
if (id) {
|
42113
|
+
parentDescriptors.push({
|
42114
|
+
id,
|
42115
|
+
mode: "standard",
|
42116
|
+
type: "DEFAULT"
|
42117
|
+
});
|
42118
|
+
}
|
42119
|
+
}
|
42120
|
+
parentDescriptors.reverse();
|
42121
|
+
return parentDescriptors;
|
42122
|
+
};
|
42085
42123
|
getDimension = ({
|
42086
42124
|
ref: ref2,
|
42087
42125
|
descriptor,
|
@@ -42117,6 +42155,7 @@ var init_dnd_esm = __esm({
|
|
42117
42155
|
shouldClipSubject
|
42118
42156
|
};
|
42119
42157
|
})();
|
42158
|
+
const parents = getParents(ref2);
|
42120
42159
|
const dimension = getDroppableDimension({
|
42121
42160
|
descriptor,
|
42122
42161
|
isEnabled: !isDropDisabled,
|
@@ -42126,7 +42165,8 @@ var init_dnd_esm = __esm({
|
|
42126
42165
|
client,
|
42127
42166
|
page,
|
42128
42167
|
closest: closest2,
|
42129
|
-
transform
|
42168
|
+
transform,
|
42169
|
+
parents
|
42130
42170
|
});
|
42131
42171
|
return dimension;
|
42132
42172
|
};
|
@@ -42597,6 +42637,1291 @@ var init_dnd_esm = __esm({
|
|
42597
42637
|
}
|
42598
42638
|
});
|
42599
42639
|
|
42640
|
+
// ../../node_modules/ua-parser-js/src/ua-parser.js
|
42641
|
+
var require_ua_parser = __commonJS({
|
42642
|
+
"../../node_modules/ua-parser-js/src/ua-parser.js"(exports, module2) {
|
42643
|
+
init_react_import();
|
42644
|
+
(function(window2, undefined2) {
|
42645
|
+
"use strict";
|
42646
|
+
var LIBVERSION = "1.0.37", EMPTY = "", UNKNOWN = "?", FUNC_TYPE = "function", UNDEF_TYPE = "undefined", OBJ_TYPE = "object", STR_TYPE = "string", MAJOR = "major", MODEL = "model", NAME = "name", TYPE2 = "type", VENDOR = "vendor", VERSION = "version", ARCHITECTURE = "architecture", CONSOLE = "console", MOBILE = "mobile", TABLET = "tablet", SMARTTV = "smarttv", WEARABLE = "wearable", EMBEDDED = "embedded", UA_MAX_LENGTH = 500;
|
42647
|
+
var AMAZON = "Amazon", APPLE = "Apple", ASUS = "ASUS", BLACKBERRY = "BlackBerry", BROWSER = "Browser", CHROME = "Chrome", EDGE = "Edge", FIREFOX = "Firefox", GOOGLE = "Google", HUAWEI = "Huawei", LG = "LG", MICROSOFT = "Microsoft", MOTOROLA = "Motorola", OPERA = "Opera", SAMSUNG = "Samsung", SHARP = "Sharp", SONY = "Sony", XIAOMI = "Xiaomi", ZEBRA = "Zebra", FACEBOOK = "Facebook", CHROMIUM_OS = "Chromium OS", MAC_OS = "Mac OS";
|
42648
|
+
var extend = function(regexes2, extensions) {
|
42649
|
+
var mergedRegexes = {};
|
42650
|
+
for (var i2 in regexes2) {
|
42651
|
+
if (extensions[i2] && extensions[i2].length % 2 === 0) {
|
42652
|
+
mergedRegexes[i2] = extensions[i2].concat(regexes2[i2]);
|
42653
|
+
} else {
|
42654
|
+
mergedRegexes[i2] = regexes2[i2];
|
42655
|
+
}
|
42656
|
+
}
|
42657
|
+
return mergedRegexes;
|
42658
|
+
}, enumerize = function(arr) {
|
42659
|
+
var enums = {};
|
42660
|
+
for (var i2 = 0; i2 < arr.length; i2++) {
|
42661
|
+
enums[arr[i2].toUpperCase()] = arr[i2];
|
42662
|
+
}
|
42663
|
+
return enums;
|
42664
|
+
}, has = function(str1, str2) {
|
42665
|
+
return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
|
42666
|
+
}, lowerize = function(str) {
|
42667
|
+
return str.toLowerCase();
|
42668
|
+
}, majorize = function(version2) {
|
42669
|
+
return typeof version2 === STR_TYPE ? version2.replace(/[^\d\.]/g, EMPTY).split(".")[0] : undefined2;
|
42670
|
+
}, trim = function(str, len) {
|
42671
|
+
if (typeof str === STR_TYPE) {
|
42672
|
+
str = str.replace(/^\s\s*/, EMPTY);
|
42673
|
+
return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
|
42674
|
+
}
|
42675
|
+
};
|
42676
|
+
var rgxMapper = function(ua, arrays) {
|
42677
|
+
var i2 = 0, j, k, p, q, matches, match;
|
42678
|
+
while (i2 < arrays.length && !matches) {
|
42679
|
+
var regex = arrays[i2], props = arrays[i2 + 1];
|
42680
|
+
j = k = 0;
|
42681
|
+
while (j < regex.length && !matches) {
|
42682
|
+
if (!regex[j]) {
|
42683
|
+
break;
|
42684
|
+
}
|
42685
|
+
matches = regex[j++].exec(ua);
|
42686
|
+
if (!!matches) {
|
42687
|
+
for (p = 0; p < props.length; p++) {
|
42688
|
+
match = matches[++k];
|
42689
|
+
q = props[p];
|
42690
|
+
if (typeof q === OBJ_TYPE && q.length > 0) {
|
42691
|
+
if (q.length === 2) {
|
42692
|
+
if (typeof q[1] == FUNC_TYPE) {
|
42693
|
+
this[q[0]] = q[1].call(this, match);
|
42694
|
+
} else {
|
42695
|
+
this[q[0]] = q[1];
|
42696
|
+
}
|
42697
|
+
} else if (q.length === 3) {
|
42698
|
+
if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
|
42699
|
+
this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined2;
|
42700
|
+
} else {
|
42701
|
+
this[q[0]] = match ? match.replace(q[1], q[2]) : undefined2;
|
42702
|
+
}
|
42703
|
+
} else if (q.length === 4) {
|
42704
|
+
this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined2;
|
42705
|
+
}
|
42706
|
+
} else {
|
42707
|
+
this[q] = match ? match : undefined2;
|
42708
|
+
}
|
42709
|
+
}
|
42710
|
+
}
|
42711
|
+
}
|
42712
|
+
i2 += 2;
|
42713
|
+
}
|
42714
|
+
}, strMapper = function(str, map) {
|
42715
|
+
for (var i2 in map) {
|
42716
|
+
if (typeof map[i2] === OBJ_TYPE && map[i2].length > 0) {
|
42717
|
+
for (var j = 0; j < map[i2].length; j++) {
|
42718
|
+
if (has(map[i2][j], str)) {
|
42719
|
+
return i2 === UNKNOWN ? undefined2 : i2;
|
42720
|
+
}
|
42721
|
+
}
|
42722
|
+
} else if (has(map[i2], str)) {
|
42723
|
+
return i2 === UNKNOWN ? undefined2 : i2;
|
42724
|
+
}
|
42725
|
+
}
|
42726
|
+
return str;
|
42727
|
+
};
|
42728
|
+
var oldSafariMap = {
|
42729
|
+
"1.0": "/8",
|
42730
|
+
"1.2": "/1",
|
42731
|
+
"1.3": "/3",
|
42732
|
+
"2.0": "/412",
|
42733
|
+
"2.0.2": "/416",
|
42734
|
+
"2.0.3": "/417",
|
42735
|
+
"2.0.4": "/419",
|
42736
|
+
"?": "/"
|
42737
|
+
}, windowsVersionMap = {
|
42738
|
+
"ME": "4.90",
|
42739
|
+
"NT 3.11": "NT3.51",
|
42740
|
+
"NT 4.0": "NT4.0",
|
42741
|
+
"2000": "NT 5.0",
|
42742
|
+
"XP": ["NT 5.1", "NT 5.2"],
|
42743
|
+
"Vista": "NT 6.0",
|
42744
|
+
"7": "NT 6.1",
|
42745
|
+
"8": "NT 6.2",
|
42746
|
+
"8.1": "NT 6.3",
|
42747
|
+
"10": ["NT 6.4", "NT 10.0"],
|
42748
|
+
"RT": "ARM"
|
42749
|
+
};
|
42750
|
+
var regexes = {
|
42751
|
+
browser: [
|
42752
|
+
[
|
42753
|
+
/\b(?:crmo|crios)\/([\w\.]+)/i
|
42754
|
+
// Chrome for Android/iOS
|
42755
|
+
],
|
42756
|
+
[VERSION, [NAME, "Chrome"]],
|
42757
|
+
[
|
42758
|
+
/edg(?:e|ios|a)?\/([\w\.]+)/i
|
42759
|
+
// Microsoft Edge
|
42760
|
+
],
|
42761
|
+
[VERSION, [NAME, "Edge"]],
|
42762
|
+
[
|
42763
|
+
// Presto based
|
42764
|
+
/(opera mini)\/([-\w\.]+)/i,
|
42765
|
+
// Opera Mini
|
42766
|
+
/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
|
42767
|
+
// Opera Mobi/Tablet
|
42768
|
+
/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
|
42769
|
+
// Opera
|
42770
|
+
],
|
42771
|
+
[NAME, VERSION],
|
42772
|
+
[
|
42773
|
+
/opios[\/ ]+([\w\.]+)/i
|
42774
|
+
// Opera mini on iphone >= 8.0
|
42775
|
+
],
|
42776
|
+
[VERSION, [NAME, OPERA + " Mini"]],
|
42777
|
+
[
|
42778
|
+
/\bopr\/([\w\.]+)/i
|
42779
|
+
// Opera Webkit
|
42780
|
+
],
|
42781
|
+
[VERSION, [NAME, OPERA]],
|
42782
|
+
[
|
42783
|
+
// Mixed
|
42784
|
+
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
|
42785
|
+
// Baidu
|
42786
|
+
],
|
42787
|
+
[VERSION, [NAME, "Baidu"]],
|
42788
|
+
[
|
42789
|
+
/(kindle)\/([\w\.]+)/i,
|
42790
|
+
// Kindle
|
42791
|
+
/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
|
42792
|
+
// Lunascape/Maxthon/Netfront/Jasmine/Blazer
|
42793
|
+
// Trident based
|
42794
|
+
/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,
|
42795
|
+
// Avant/IEMobile/SlimBrowser
|
42796
|
+
/(?:ms|\()(ie) ([\w\.]+)/i,
|
42797
|
+
// Internet Explorer
|
42798
|
+
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
42799
|
+
/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
|
42800
|
+
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
|
42801
|
+
/(heytap|ovi)browser\/([\d\.]+)/i,
|
42802
|
+
// Heytap/Ovi
|
42803
|
+
/(weibo)__([\d\.]+)/i
|
42804
|
+
// Weibo
|
42805
|
+
],
|
42806
|
+
[NAME, VERSION],
|
42807
|
+
[
|
42808
|
+
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
|
42809
|
+
// UCBrowser
|
42810
|
+
],
|
42811
|
+
[VERSION, [NAME, "UC" + BROWSER]],
|
42812
|
+
[
|
42813
|
+
/microm.+\bqbcore\/([\w\.]+)/i,
|
42814
|
+
// WeChat Desktop for Windows Built-in Browser
|
42815
|
+
/\bqbcore\/([\w\.]+).+microm/i,
|
42816
|
+
/micromessenger\/([\w\.]+)/i
|
42817
|
+
// WeChat
|
42818
|
+
],
|
42819
|
+
[VERSION, [NAME, "WeChat"]],
|
42820
|
+
[
|
42821
|
+
/konqueror\/([\w\.]+)/i
|
42822
|
+
// Konqueror
|
42823
|
+
],
|
42824
|
+
[VERSION, [NAME, "Konqueror"]],
|
42825
|
+
[
|
42826
|
+
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
|
42827
|
+
// IE11
|
42828
|
+
],
|
42829
|
+
[VERSION, [NAME, "IE"]],
|
42830
|
+
[
|
42831
|
+
/ya(?:search)?browser\/([\w\.]+)/i
|
42832
|
+
// Yandex
|
42833
|
+
],
|
42834
|
+
[VERSION, [NAME, "Yandex"]],
|
42835
|
+
[
|
42836
|
+
/slbrowser\/([\w\.]+)/i
|
42837
|
+
// Smart Lenovo Browser
|
42838
|
+
],
|
42839
|
+
[VERSION, [NAME, "Smart Lenovo " + BROWSER]],
|
42840
|
+
[
|
42841
|
+
/(avast|avg)\/([\w\.]+)/i
|
42842
|
+
// Avast/AVG Secure Browser
|
42843
|
+
],
|
42844
|
+
[[NAME, /(.+)/, "$1 Secure " + BROWSER], VERSION],
|
42845
|
+
[
|
42846
|
+
/\bfocus\/([\w\.]+)/i
|
42847
|
+
// Firefox Focus
|
42848
|
+
],
|
42849
|
+
[VERSION, [NAME, FIREFOX + " Focus"]],
|
42850
|
+
[
|
42851
|
+
/\bopt\/([\w\.]+)/i
|
42852
|
+
// Opera Touch
|
42853
|
+
],
|
42854
|
+
[VERSION, [NAME, OPERA + " Touch"]],
|
42855
|
+
[
|
42856
|
+
/coc_coc\w+\/([\w\.]+)/i
|
42857
|
+
// Coc Coc Browser
|
42858
|
+
],
|
42859
|
+
[VERSION, [NAME, "Coc Coc"]],
|
42860
|
+
[
|
42861
|
+
/dolfin\/([\w\.]+)/i
|
42862
|
+
// Dolphin
|
42863
|
+
],
|
42864
|
+
[VERSION, [NAME, "Dolphin"]],
|
42865
|
+
[
|
42866
|
+
/coast\/([\w\.]+)/i
|
42867
|
+
// Opera Coast
|
42868
|
+
],
|
42869
|
+
[VERSION, [NAME, OPERA + " Coast"]],
|
42870
|
+
[
|
42871
|
+
/miuibrowser\/([\w\.]+)/i
|
42872
|
+
// MIUI Browser
|
42873
|
+
],
|
42874
|
+
[VERSION, [NAME, "MIUI " + BROWSER]],
|
42875
|
+
[
|
42876
|
+
/fxios\/([-\w\.]+)/i
|
42877
|
+
// Firefox for iOS
|
42878
|
+
],
|
42879
|
+
[VERSION, [NAME, FIREFOX]],
|
42880
|
+
[
|
42881
|
+
/\bqihu|(qi?ho?o?|360)browser/i
|
42882
|
+
// 360
|
42883
|
+
],
|
42884
|
+
[[NAME, "360 " + BROWSER]],
|
42885
|
+
[
|
42886
|
+
/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i
|
42887
|
+
],
|
42888
|
+
[[NAME, /(.+)/, "$1 " + BROWSER], VERSION],
|
42889
|
+
[
|
42890
|
+
// Oculus/Sailfish/HuaweiBrowser/VivoBrowser
|
42891
|
+
/samsungbrowser\/([\w\.]+)/i
|
42892
|
+
// Samsung Internet
|
42893
|
+
],
|
42894
|
+
[VERSION, [NAME, SAMSUNG + " Internet"]],
|
42895
|
+
[
|
42896
|
+
/(comodo_dragon)\/([\w\.]+)/i
|
42897
|
+
// Comodo Dragon
|
42898
|
+
],
|
42899
|
+
[[NAME, /_/g, " "], VERSION],
|
42900
|
+
[
|
42901
|
+
/metasr[\/ ]?([\d\.]+)/i
|
42902
|
+
// Sogou Explorer
|
42903
|
+
],
|
42904
|
+
[VERSION, [NAME, "Sogou Explorer"]],
|
42905
|
+
[
|
42906
|
+
/(sogou)mo\w+\/([\d\.]+)/i
|
42907
|
+
// Sogou Mobile
|
42908
|
+
],
|
42909
|
+
[[NAME, "Sogou Mobile"], VERSION],
|
42910
|
+
[
|
42911
|
+
/(electron)\/([\w\.]+) safari/i,
|
42912
|
+
// Electron-based App
|
42913
|
+
/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
|
42914
|
+
// Tesla
|
42915
|
+
/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i
|
42916
|
+
// QQBrowser/2345 Browser
|
42917
|
+
],
|
42918
|
+
[NAME, VERSION],
|
42919
|
+
[
|
42920
|
+
/(lbbrowser)/i,
|
42921
|
+
// LieBao Browser
|
42922
|
+
/\[(linkedin)app\]/i
|
42923
|
+
// LinkedIn App for iOS & Android
|
42924
|
+
],
|
42925
|
+
[NAME],
|
42926
|
+
[
|
42927
|
+
// WebView
|
42928
|
+
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
|
42929
|
+
// Facebook App for iOS & Android
|
42930
|
+
],
|
42931
|
+
[[NAME, FACEBOOK], VERSION],
|
42932
|
+
[
|
42933
|
+
/(Klarna)\/([\w\.]+)/i,
|
42934
|
+
// Klarna Shopping Browser for iOS & Android
|
42935
|
+
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
|
42936
|
+
// Kakao App
|
42937
|
+
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
|
42938
|
+
// Naver InApp
|
42939
|
+
/safari (line)\/([\w\.]+)/i,
|
42940
|
+
// Line App for iOS
|
42941
|
+
/\b(line)\/([\w\.]+)\/iab/i,
|
42942
|
+
// Line App for Android
|
42943
|
+
/(alipay)client\/([\w\.]+)/i,
|
42944
|
+
// Alipay
|
42945
|
+
/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i
|
42946
|
+
// Chromium/Instagram/Snapchat
|
42947
|
+
],
|
42948
|
+
[NAME, VERSION],
|
42949
|
+
[
|
42950
|
+
/\bgsa\/([\w\.]+) .*safari\//i
|
42951
|
+
// Google Search Appliance on iOS
|
42952
|
+
],
|
42953
|
+
[VERSION, [NAME, "GSA"]],
|
42954
|
+
[
|
42955
|
+
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
|
42956
|
+
// TikTok
|
42957
|
+
],
|
42958
|
+
[VERSION, [NAME, "TikTok"]],
|
42959
|
+
[
|
42960
|
+
/headlesschrome(?:\/([\w\.]+)| )/i
|
42961
|
+
// Chrome Headless
|
42962
|
+
],
|
42963
|
+
[VERSION, [NAME, CHROME + " Headless"]],
|
42964
|
+
[
|
42965
|
+
/ wv\).+(chrome)\/([\w\.]+)/i
|
42966
|
+
// Chrome WebView
|
42967
|
+
],
|
42968
|
+
[[NAME, CHROME + " WebView"], VERSION],
|
42969
|
+
[
|
42970
|
+
/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
|
42971
|
+
// Android Browser
|
42972
|
+
],
|
42973
|
+
[VERSION, [NAME, "Android " + BROWSER]],
|
42974
|
+
[
|
42975
|
+
/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
|
42976
|
+
// Chrome/OmniWeb/Arora/Tizen/Nokia
|
42977
|
+
],
|
42978
|
+
[NAME, VERSION],
|
42979
|
+
[
|
42980
|
+
/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
|
42981
|
+
// Mobile Safari
|
42982
|
+
],
|
42983
|
+
[VERSION, [NAME, "Mobile Safari"]],
|
42984
|
+
[
|
42985
|
+
/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
|
42986
|
+
// Safari & Safari Mobile
|
42987
|
+
],
|
42988
|
+
[VERSION, NAME],
|
42989
|
+
[
|
42990
|
+
/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
|
42991
|
+
// Safari < 3.0
|
42992
|
+
],
|
42993
|
+
[NAME, [VERSION, strMapper, oldSafariMap]],
|
42994
|
+
[
|
42995
|
+
/(webkit|khtml)\/([\w\.]+)/i
|
42996
|
+
],
|
42997
|
+
[NAME, VERSION],
|
42998
|
+
[
|
42999
|
+
// Gecko based
|
43000
|
+
/(navigator|netscape\d?)\/([-\w\.]+)/i
|
43001
|
+
// Netscape
|
43002
|
+
],
|
43003
|
+
[[NAME, "Netscape"], VERSION],
|
43004
|
+
[
|
43005
|
+
/mobile vr; rv:([\w\.]+)\).+firefox/i
|
43006
|
+
// Firefox Reality
|
43007
|
+
],
|
43008
|
+
[VERSION, [NAME, FIREFOX + " Reality"]],
|
43009
|
+
[
|
43010
|
+
/ekiohf.+(flow)\/([\w\.]+)/i,
|
43011
|
+
// Flow
|
43012
|
+
/(swiftfox)/i,
|
43013
|
+
// Swiftfox
|
43014
|
+
/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
|
43015
|
+
// IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
|
43016
|
+
/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
|
43017
|
+
// Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
|
43018
|
+
/(firefox)\/([\w\.]+)/i,
|
43019
|
+
// Other Firefox-based
|
43020
|
+
/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
|
43021
|
+
// Mozilla
|
43022
|
+
// Other
|
43023
|
+
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
|
43024
|
+
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
|
43025
|
+
/(links) \(([\w\.]+)/i,
|
43026
|
+
// Links
|
43027
|
+
/panasonic;(viera)/i
|
43028
|
+
// Panasonic Viera
|
43029
|
+
],
|
43030
|
+
[NAME, VERSION],
|
43031
|
+
[
|
43032
|
+
/(cobalt)\/([\w\.]+)/i
|
43033
|
+
// Cobalt
|
43034
|
+
],
|
43035
|
+
[NAME, [VERSION, /master.|lts./, ""]]
|
43036
|
+
],
|
43037
|
+
cpu: [
|
43038
|
+
[
|
43039
|
+
/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
|
43040
|
+
// AMD64 (x64)
|
43041
|
+
],
|
43042
|
+
[[ARCHITECTURE, "amd64"]],
|
43043
|
+
[
|
43044
|
+
/(ia32(?=;))/i
|
43045
|
+
// IA32 (quicktime)
|
43046
|
+
],
|
43047
|
+
[[ARCHITECTURE, lowerize]],
|
43048
|
+
[
|
43049
|
+
/((?:i[346]|x)86)[;\)]/i
|
43050
|
+
// IA32 (x86)
|
43051
|
+
],
|
43052
|
+
[[ARCHITECTURE, "ia32"]],
|
43053
|
+
[
|
43054
|
+
/\b(aarch64|arm(v?8e?l?|_?64))\b/i
|
43055
|
+
// ARM64
|
43056
|
+
],
|
43057
|
+
[[ARCHITECTURE, "arm64"]],
|
43058
|
+
[
|
43059
|
+
/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
|
43060
|
+
// ARMHF
|
43061
|
+
],
|
43062
|
+
[[ARCHITECTURE, "armhf"]],
|
43063
|
+
[
|
43064
|
+
// PocketPC mistakenly identified as PowerPC
|
43065
|
+
/windows (ce|mobile); ppc;/i
|
43066
|
+
],
|
43067
|
+
[[ARCHITECTURE, "arm"]],
|
43068
|
+
[
|
43069
|
+
/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
|
43070
|
+
// PowerPC
|
43071
|
+
],
|
43072
|
+
[[ARCHITECTURE, /ower/, EMPTY, lowerize]],
|
43073
|
+
[
|
43074
|
+
/(sun4\w)[;\)]/i
|
43075
|
+
// SPARC
|
43076
|
+
],
|
43077
|
+
[[ARCHITECTURE, "sparc"]],
|
43078
|
+
[
|
43079
|
+
/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
|
43080
|
+
// IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
|
43081
|
+
],
|
43082
|
+
[[ARCHITECTURE, lowerize]]
|
43083
|
+
],
|
43084
|
+
device: [
|
43085
|
+
[
|
43086
|
+
//////////////////////////
|
43087
|
+
// MOBILES & TABLETS
|
43088
|
+
/////////////////////////
|
43089
|
+
// Samsung
|
43090
|
+
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
43091
|
+
],
|
43092
|
+
[MODEL, [VENDOR, SAMSUNG], [TYPE2, TABLET]],
|
43093
|
+
[
|
43094
|
+
/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
|
43095
|
+
/samsung[- ]([-\w]+)/i,
|
43096
|
+
/sec-(sgh\w+)/i
|
43097
|
+
],
|
43098
|
+
[MODEL, [VENDOR, SAMSUNG], [TYPE2, MOBILE]],
|
43099
|
+
[
|
43100
|
+
// Apple
|
43101
|
+
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
|
43102
|
+
// iPod/iPhone
|
43103
|
+
],
|
43104
|
+
[MODEL, [VENDOR, APPLE], [TYPE2, MOBILE]],
|
43105
|
+
[
|
43106
|
+
/\((ipad);[-\w\),; ]+apple/i,
|
43107
|
+
// iPad
|
43108
|
+
/applecoremedia\/[\w\.]+ \((ipad)/i,
|
43109
|
+
/\b(ipad)\d\d?,\d\d?[;\]].+ios/i
|
43110
|
+
],
|
43111
|
+
[MODEL, [VENDOR, APPLE], [TYPE2, TABLET]],
|
43112
|
+
[
|
43113
|
+
/(macintosh);/i
|
43114
|
+
],
|
43115
|
+
[MODEL, [VENDOR, APPLE]],
|
43116
|
+
[
|
43117
|
+
// Sharp
|
43118
|
+
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
|
43119
|
+
],
|
43120
|
+
[MODEL, [VENDOR, SHARP], [TYPE2, MOBILE]],
|
43121
|
+
[
|
43122
|
+
// Huawei
|
43123
|
+
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
|
43124
|
+
],
|
43125
|
+
[MODEL, [VENDOR, HUAWEI], [TYPE2, TABLET]],
|
43126
|
+
[
|
43127
|
+
/(?:huawei|honor)([-\w ]+)[;\)]/i,
|
43128
|
+
/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
|
43129
|
+
],
|
43130
|
+
[MODEL, [VENDOR, HUAWEI], [TYPE2, MOBILE]],
|
43131
|
+
[
|
43132
|
+
// Xiaomi
|
43133
|
+
/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
|
43134
|
+
// Xiaomi POCO
|
43135
|
+
/\b; (\w+) build\/hm\1/i,
|
43136
|
+
// Xiaomi Hongmi 'numeric' models
|
43137
|
+
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
|
43138
|
+
// Xiaomi Hongmi
|
43139
|
+
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
|
43140
|
+
// Xiaomi Redmi
|
43141
|
+
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
|
43142
|
+
// Xiaomi Redmi 'numeric' models
|
43143
|
+
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
|
43144
|
+
// Xiaomi Mi
|
43145
|
+
],
|
43146
|
+
[[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE2, MOBILE]],
|
43147
|
+
[
|
43148
|
+
/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,
|
43149
|
+
// Redmi Pad
|
43150
|
+
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
|
43151
|
+
// Mi Pad tablets
|
43152
|
+
],
|
43153
|
+
[[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE2, TABLET]],
|
43154
|
+
[
|
43155
|
+
// OPPO
|
43156
|
+
/; (\w+) bui.+ oppo/i,
|
43157
|
+
/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
|
43158
|
+
],
|
43159
|
+
[MODEL, [VENDOR, "OPPO"], [TYPE2, MOBILE]],
|
43160
|
+
[
|
43161
|
+
// Vivo
|
43162
|
+
/vivo (\w+)(?: bui|\))/i,
|
43163
|
+
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
43164
|
+
],
|
43165
|
+
[MODEL, [VENDOR, "Vivo"], [TYPE2, MOBILE]],
|
43166
|
+
[
|
43167
|
+
// Realme
|
43168
|
+
/\b(rmx[1-3]\d{3})(?: bui|;|\))/i
|
43169
|
+
],
|
43170
|
+
[MODEL, [VENDOR, "Realme"], [TYPE2, MOBILE]],
|
43171
|
+
[
|
43172
|
+
// Motorola
|
43173
|
+
/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
|
43174
|
+
/\bmot(?:orola)?[- ](\w*)/i,
|
43175
|
+
/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
|
43176
|
+
],
|
43177
|
+
[MODEL, [VENDOR, MOTOROLA], [TYPE2, MOBILE]],
|
43178
|
+
[
|
43179
|
+
/\b(mz60\d|xoom[2 ]{0,2}) build\//i
|
43180
|
+
],
|
43181
|
+
[MODEL, [VENDOR, MOTOROLA], [TYPE2, TABLET]],
|
43182
|
+
[
|
43183
|
+
// LG
|
43184
|
+
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
43185
|
+
],
|
43186
|
+
[MODEL, [VENDOR, LG], [TYPE2, TABLET]],
|
43187
|
+
[
|
43188
|
+
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
43189
|
+
/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
|
43190
|
+
/\blg-?([\d\w]+) bui/i
|
43191
|
+
],
|
43192
|
+
[MODEL, [VENDOR, LG], [TYPE2, MOBILE]],
|
43193
|
+
[
|
43194
|
+
// Lenovo
|
43195
|
+
/(ideatab[-\w ]+)/i,
|
43196
|
+
/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
|
43197
|
+
],
|
43198
|
+
[MODEL, [VENDOR, "Lenovo"], [TYPE2, TABLET]],
|
43199
|
+
[
|
43200
|
+
// Nokia
|
43201
|
+
/(?:maemo|nokia).*(n900|lumia \d+)/i,
|
43202
|
+
/nokia[-_ ]?([-\w\.]*)/i
|
43203
|
+
],
|
43204
|
+
[[MODEL, /_/g, " "], [VENDOR, "Nokia"], [TYPE2, MOBILE]],
|
43205
|
+
[
|
43206
|
+
// Google
|
43207
|
+
/(pixel c)\b/i
|
43208
|
+
// Google Pixel C
|
43209
|
+
],
|
43210
|
+
[MODEL, [VENDOR, GOOGLE], [TYPE2, TABLET]],
|
43211
|
+
[
|
43212
|
+
/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
|
43213
|
+
// Google Pixel
|
43214
|
+
],
|
43215
|
+
[MODEL, [VENDOR, GOOGLE], [TYPE2, MOBILE]],
|
43216
|
+
[
|
43217
|
+
// Sony
|
43218
|
+
/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
|
43219
|
+
],
|
43220
|
+
[MODEL, [VENDOR, SONY], [TYPE2, MOBILE]],
|
43221
|
+
[
|
43222
|
+
/sony tablet [ps]/i,
|
43223
|
+
/\b(?:sony)?sgp\w+(?: bui|\))/i
|
43224
|
+
],
|
43225
|
+
[[MODEL, "Xperia Tablet"], [VENDOR, SONY], [TYPE2, TABLET]],
|
43226
|
+
[
|
43227
|
+
// OnePlus
|
43228
|
+
/ (kb2005|in20[12]5|be20[12][59])\b/i,
|
43229
|
+
/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
|
43230
|
+
],
|
43231
|
+
[MODEL, [VENDOR, "OnePlus"], [TYPE2, MOBILE]],
|
43232
|
+
[
|
43233
|
+
// Amazon
|
43234
|
+
/(alexa)webm/i,
|
43235
|
+
/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,
|
43236
|
+
// Kindle Fire without Silk / Echo Show
|
43237
|
+
/(kf[a-z]+)( bui|\)).+silk\//i
|
43238
|
+
// Kindle Fire HD
|
43239
|
+
],
|
43240
|
+
[MODEL, [VENDOR, AMAZON], [TYPE2, TABLET]],
|
43241
|
+
[
|
43242
|
+
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
|
43243
|
+
// Fire Phone
|
43244
|
+
],
|
43245
|
+
[[MODEL, /(.+)/g, "Fire Phone $1"], [VENDOR, AMAZON], [TYPE2, MOBILE]],
|
43246
|
+
[
|
43247
|
+
// BlackBerry
|
43248
|
+
/(playbook);[-\w\),; ]+(rim)/i
|
43249
|
+
// BlackBerry PlayBook
|
43250
|
+
],
|
43251
|
+
[MODEL, VENDOR, [TYPE2, TABLET]],
|
43252
|
+
[
|
43253
|
+
/\b((?:bb[a-f]|st[hv])100-\d)/i,
|
43254
|
+
/\(bb10; (\w+)/i
|
43255
|
+
// BlackBerry 10
|
43256
|
+
],
|
43257
|
+
[MODEL, [VENDOR, BLACKBERRY], [TYPE2, MOBILE]],
|
43258
|
+
[
|
43259
|
+
// Asus
|
43260
|
+
/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
|
43261
|
+
],
|
43262
|
+
[MODEL, [VENDOR, ASUS], [TYPE2, TABLET]],
|
43263
|
+
[
|
43264
|
+
/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
|
43265
|
+
],
|
43266
|
+
[MODEL, [VENDOR, ASUS], [TYPE2, MOBILE]],
|
43267
|
+
[
|
43268
|
+
// HTC
|
43269
|
+
/(nexus 9)/i
|
43270
|
+
// HTC Nexus 9
|
43271
|
+
],
|
43272
|
+
[MODEL, [VENDOR, "HTC"], [TYPE2, TABLET]],
|
43273
|
+
[
|
43274
|
+
/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
|
43275
|
+
// HTC
|
43276
|
+
// ZTE
|
43277
|
+
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
|
43278
|
+
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
|
43279
|
+
// Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
43280
|
+
],
|
43281
|
+
[VENDOR, [MODEL, /_/g, " "], [TYPE2, MOBILE]],
|
43282
|
+
[
|
43283
|
+
// Acer
|
43284
|
+
/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
|
43285
|
+
],
|
43286
|
+
[MODEL, [VENDOR, "Acer"], [TYPE2, TABLET]],
|
43287
|
+
[
|
43288
|
+
// Meizu
|
43289
|
+
/droid.+; (m[1-5] note) bui/i,
|
43290
|
+
/\bmz-([-\w]{2,})/i
|
43291
|
+
],
|
43292
|
+
[MODEL, [VENDOR, "Meizu"], [TYPE2, MOBILE]],
|
43293
|
+
[
|
43294
|
+
// Ulefone
|
43295
|
+
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
43296
|
+
],
|
43297
|
+
[MODEL, [VENDOR, "Ulefone"], [TYPE2, MOBILE]],
|
43298
|
+
[
|
43299
|
+
// MIXED
|
43300
|
+
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
43301
|
+
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
43302
|
+
/(hp) ([\w ]+\w)/i,
|
43303
|
+
// HP iPAQ
|
43304
|
+
/(asus)-?(\w+)/i,
|
43305
|
+
// Asus
|
43306
|
+
/(microsoft); (lumia[\w ]+)/i,
|
43307
|
+
// Microsoft Lumia
|
43308
|
+
/(lenovo)[-_ ]?([-\w]+)/i,
|
43309
|
+
// Lenovo
|
43310
|
+
/(jolla)/i,
|
43311
|
+
// Jolla
|
43312
|
+
/(oppo) ?([\w ]+) bui/i
|
43313
|
+
// OPPO
|
43314
|
+
],
|
43315
|
+
[VENDOR, MODEL, [TYPE2, MOBILE]],
|
43316
|
+
[
|
43317
|
+
/(kobo)\s(ereader|touch)/i,
|
43318
|
+
// Kobo
|
43319
|
+
/(archos) (gamepad2?)/i,
|
43320
|
+
// Archos
|
43321
|
+
/(hp).+(touchpad(?!.+tablet)|tablet)/i,
|
43322
|
+
// HP TouchPad
|
43323
|
+
/(kindle)\/([\w\.]+)/i,
|
43324
|
+
// Kindle
|
43325
|
+
/(nook)[\w ]+build\/(\w+)/i,
|
43326
|
+
// Nook
|
43327
|
+
/(dell) (strea[kpr\d ]*[\dko])/i,
|
43328
|
+
// Dell Streak
|
43329
|
+
/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
|
43330
|
+
// Le Pan Tablets
|
43331
|
+
/(trinity)[- ]*(t\d{3}) bui/i,
|
43332
|
+
// Trinity Tablets
|
43333
|
+
/(gigaset)[- ]+(q\w{1,9}) bui/i,
|
43334
|
+
// Gigaset Tablets
|
43335
|
+
/(vodafone) ([\w ]+)(?:\)| bui)/i
|
43336
|
+
// Vodafone
|
43337
|
+
],
|
43338
|
+
[VENDOR, MODEL, [TYPE2, TABLET]],
|
43339
|
+
[
|
43340
|
+
/(surface duo)/i
|
43341
|
+
// Surface Duo
|
43342
|
+
],
|
43343
|
+
[MODEL, [VENDOR, MICROSOFT], [TYPE2, TABLET]],
|
43344
|
+
[
|
43345
|
+
/droid [\d\.]+; (fp\du?)(?: b|\))/i
|
43346
|
+
// Fairphone
|
43347
|
+
],
|
43348
|
+
[MODEL, [VENDOR, "Fairphone"], [TYPE2, MOBILE]],
|
43349
|
+
[
|
43350
|
+
/(u304aa)/i
|
43351
|
+
// AT&T
|
43352
|
+
],
|
43353
|
+
[MODEL, [VENDOR, "AT&T"], [TYPE2, MOBILE]],
|
43354
|
+
[
|
43355
|
+
/\bsie-(\w*)/i
|
43356
|
+
// Siemens
|
43357
|
+
],
|
43358
|
+
[MODEL, [VENDOR, "Siemens"], [TYPE2, MOBILE]],
|
43359
|
+
[
|
43360
|
+
/\b(rct\w+) b/i
|
43361
|
+
// RCA Tablets
|
43362
|
+
],
|
43363
|
+
[MODEL, [VENDOR, "RCA"], [TYPE2, TABLET]],
|
43364
|
+
[
|
43365
|
+
/\b(venue[\d ]{2,7}) b/i
|
43366
|
+
// Dell Venue Tablets
|
43367
|
+
],
|
43368
|
+
[MODEL, [VENDOR, "Dell"], [TYPE2, TABLET]],
|
43369
|
+
[
|
43370
|
+
/\b(q(?:mv|ta)\w+) b/i
|
43371
|
+
// Verizon Tablet
|
43372
|
+
],
|
43373
|
+
[MODEL, [VENDOR, "Verizon"], [TYPE2, TABLET]],
|
43374
|
+
[
|
43375
|
+
/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
|
43376
|
+
// Barnes & Noble Tablet
|
43377
|
+
],
|
43378
|
+
[MODEL, [VENDOR, "Barnes & Noble"], [TYPE2, TABLET]],
|
43379
|
+
[
|
43380
|
+
/\b(tm\d{3}\w+) b/i
|
43381
|
+
],
|
43382
|
+
[MODEL, [VENDOR, "NuVision"], [TYPE2, TABLET]],
|
43383
|
+
[
|
43384
|
+
/\b(k88) b/i
|
43385
|
+
// ZTE K Series Tablet
|
43386
|
+
],
|
43387
|
+
[MODEL, [VENDOR, "ZTE"], [TYPE2, TABLET]],
|
43388
|
+
[
|
43389
|
+
/\b(nx\d{3}j) b/i
|
43390
|
+
// ZTE Nubia
|
43391
|
+
],
|
43392
|
+
[MODEL, [VENDOR, "ZTE"], [TYPE2, MOBILE]],
|
43393
|
+
[
|
43394
|
+
/\b(gen\d{3}) b.+49h/i
|
43395
|
+
// Swiss GEN Mobile
|
43396
|
+
],
|
43397
|
+
[MODEL, [VENDOR, "Swiss"], [TYPE2, MOBILE]],
|
43398
|
+
[
|
43399
|
+
/\b(zur\d{3}) b/i
|
43400
|
+
// Swiss ZUR Tablet
|
43401
|
+
],
|
43402
|
+
[MODEL, [VENDOR, "Swiss"], [TYPE2, TABLET]],
|
43403
|
+
[
|
43404
|
+
/\b((zeki)?tb.*\b) b/i
|
43405
|
+
// Zeki Tablets
|
43406
|
+
],
|
43407
|
+
[MODEL, [VENDOR, "Zeki"], [TYPE2, TABLET]],
|
43408
|
+
[
|
43409
|
+
/\b([yr]\d{2}) b/i,
|
43410
|
+
/\b(dragon[- ]+touch |dt)(\w{5}) b/i
|
43411
|
+
// Dragon Touch Tablet
|
43412
|
+
],
|
43413
|
+
[[VENDOR, "Dragon Touch"], MODEL, [TYPE2, TABLET]],
|
43414
|
+
[
|
43415
|
+
/\b(ns-?\w{0,9}) b/i
|
43416
|
+
// Insignia Tablets
|
43417
|
+
],
|
43418
|
+
[MODEL, [VENDOR, "Insignia"], [TYPE2, TABLET]],
|
43419
|
+
[
|
43420
|
+
/\b((nxa|next)-?\w{0,9}) b/i
|
43421
|
+
// NextBook Tablets
|
43422
|
+
],
|
43423
|
+
[MODEL, [VENDOR, "NextBook"], [TYPE2, TABLET]],
|
43424
|
+
[
|
43425
|
+
/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
|
43426
|
+
// Voice Xtreme Phones
|
43427
|
+
],
|
43428
|
+
[[VENDOR, "Voice"], MODEL, [TYPE2, MOBILE]],
|
43429
|
+
[
|
43430
|
+
/\b(lvtel\-)?(v1[12]) b/i
|
43431
|
+
// LvTel Phones
|
43432
|
+
],
|
43433
|
+
[[VENDOR, "LvTel"], MODEL, [TYPE2, MOBILE]],
|
43434
|
+
[
|
43435
|
+
/\b(ph-1) /i
|
43436
|
+
// Essential PH-1
|
43437
|
+
],
|
43438
|
+
[MODEL, [VENDOR, "Essential"], [TYPE2, MOBILE]],
|
43439
|
+
[
|
43440
|
+
/\b(v(100md|700na|7011|917g).*\b) b/i
|
43441
|
+
// Envizen Tablets
|
43442
|
+
],
|
43443
|
+
[MODEL, [VENDOR, "Envizen"], [TYPE2, TABLET]],
|
43444
|
+
[
|
43445
|
+
/\b(trio[-\w\. ]+) b/i
|
43446
|
+
// MachSpeed Tablets
|
43447
|
+
],
|
43448
|
+
[MODEL, [VENDOR, "MachSpeed"], [TYPE2, TABLET]],
|
43449
|
+
[
|
43450
|
+
/\btu_(1491) b/i
|
43451
|
+
// Rotor Tablets
|
43452
|
+
],
|
43453
|
+
[MODEL, [VENDOR, "Rotor"], [TYPE2, TABLET]],
|
43454
|
+
[
|
43455
|
+
/(shield[\w ]+) b/i
|
43456
|
+
// Nvidia Shield Tablets
|
43457
|
+
],
|
43458
|
+
[MODEL, [VENDOR, "Nvidia"], [TYPE2, TABLET]],
|
43459
|
+
[
|
43460
|
+
/(sprint) (\w+)/i
|
43461
|
+
// Sprint Phones
|
43462
|
+
],
|
43463
|
+
[VENDOR, MODEL, [TYPE2, MOBILE]],
|
43464
|
+
[
|
43465
|
+
/(kin\.[onetw]{3})/i
|
43466
|
+
// Microsoft Kin
|
43467
|
+
],
|
43468
|
+
[[MODEL, /\./g, " "], [VENDOR, MICROSOFT], [TYPE2, MOBILE]],
|
43469
|
+
[
|
43470
|
+
/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
|
43471
|
+
// Zebra
|
43472
|
+
],
|
43473
|
+
[MODEL, [VENDOR, ZEBRA], [TYPE2, TABLET]],
|
43474
|
+
[
|
43475
|
+
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
|
43476
|
+
],
|
43477
|
+
[MODEL, [VENDOR, ZEBRA], [TYPE2, MOBILE]],
|
43478
|
+
[
|
43479
|
+
///////////////////
|
43480
|
+
// SMARTTVS
|
43481
|
+
///////////////////
|
43482
|
+
/smart-tv.+(samsung)/i
|
43483
|
+
// Samsung
|
43484
|
+
],
|
43485
|
+
[VENDOR, [TYPE2, SMARTTV]],
|
43486
|
+
[
|
43487
|
+
/hbbtv.+maple;(\d+)/i
|
43488
|
+
],
|
43489
|
+
[[MODEL, /^/, "SmartTV"], [VENDOR, SAMSUNG], [TYPE2, SMARTTV]],
|
43490
|
+
[
|
43491
|
+
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
43492
|
+
// LG SmartTV
|
43493
|
+
],
|
43494
|
+
[[VENDOR, LG], [TYPE2, SMARTTV]],
|
43495
|
+
[
|
43496
|
+
/(apple) ?tv/i
|
43497
|
+
// Apple TV
|
43498
|
+
],
|
43499
|
+
[VENDOR, [MODEL, APPLE + " TV"], [TYPE2, SMARTTV]],
|
43500
|
+
[
|
43501
|
+
/crkey/i
|
43502
|
+
// Google Chromecast
|
43503
|
+
],
|
43504
|
+
[[MODEL, CHROME + "cast"], [VENDOR, GOOGLE], [TYPE2, SMARTTV]],
|
43505
|
+
[
|
43506
|
+
/droid.+aft(\w+)( bui|\))/i
|
43507
|
+
// Fire TV
|
43508
|
+
],
|
43509
|
+
[MODEL, [VENDOR, AMAZON], [TYPE2, SMARTTV]],
|
43510
|
+
[
|
43511
|
+
/\(dtv[\);].+(aquos)/i,
|
43512
|
+
/(aquos-tv[\w ]+)\)/i
|
43513
|
+
// Sharp
|
43514
|
+
],
|
43515
|
+
[MODEL, [VENDOR, SHARP], [TYPE2, SMARTTV]],
|
43516
|
+
[
|
43517
|
+
/(bravia[\w ]+)( bui|\))/i
|
43518
|
+
// Sony
|
43519
|
+
],
|
43520
|
+
[MODEL, [VENDOR, SONY], [TYPE2, SMARTTV]],
|
43521
|
+
[
|
43522
|
+
/(mitv-\w{5}) bui/i
|
43523
|
+
// Xiaomi
|
43524
|
+
],
|
43525
|
+
[MODEL, [VENDOR, XIAOMI], [TYPE2, SMARTTV]],
|
43526
|
+
[
|
43527
|
+
/Hbbtv.*(technisat) (.*);/i
|
43528
|
+
// TechniSAT
|
43529
|
+
],
|
43530
|
+
[VENDOR, MODEL, [TYPE2, SMARTTV]],
|
43531
|
+
[
|
43532
|
+
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
|
43533
|
+
// Roku
|
43534
|
+
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
|
43535
|
+
// HbbTV devices
|
43536
|
+
],
|
43537
|
+
[[VENDOR, trim], [MODEL, trim], [TYPE2, SMARTTV]],
|
43538
|
+
[
|
43539
|
+
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
|
43540
|
+
// SmartTV from Unidentified Vendors
|
43541
|
+
],
|
43542
|
+
[[TYPE2, SMARTTV]],
|
43543
|
+
[
|
43544
|
+
///////////////////
|
43545
|
+
// CONSOLES
|
43546
|
+
///////////////////
|
43547
|
+
/(ouya)/i,
|
43548
|
+
// Ouya
|
43549
|
+
/(nintendo) ([wids3utch]+)/i
|
43550
|
+
// Nintendo
|
43551
|
+
],
|
43552
|
+
[VENDOR, MODEL, [TYPE2, CONSOLE]],
|
43553
|
+
[
|
43554
|
+
/droid.+; (shield) bui/i
|
43555
|
+
// Nvidia
|
43556
|
+
],
|
43557
|
+
[MODEL, [VENDOR, "Nvidia"], [TYPE2, CONSOLE]],
|
43558
|
+
[
|
43559
|
+
/(playstation [345portablevi]+)/i
|
43560
|
+
// Playstation
|
43561
|
+
],
|
43562
|
+
[MODEL, [VENDOR, SONY], [TYPE2, CONSOLE]],
|
43563
|
+
[
|
43564
|
+
/\b(xbox(?: one)?(?!; xbox))[\); ]/i
|
43565
|
+
// Microsoft Xbox
|
43566
|
+
],
|
43567
|
+
[MODEL, [VENDOR, MICROSOFT], [TYPE2, CONSOLE]],
|
43568
|
+
[
|
43569
|
+
///////////////////
|
43570
|
+
// WEARABLES
|
43571
|
+
///////////////////
|
43572
|
+
/((pebble))app/i
|
43573
|
+
// Pebble
|
43574
|
+
],
|
43575
|
+
[VENDOR, MODEL, [TYPE2, WEARABLE]],
|
43576
|
+
[
|
43577
|
+
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
|
43578
|
+
// Apple Watch
|
43579
|
+
],
|
43580
|
+
[MODEL, [VENDOR, APPLE], [TYPE2, WEARABLE]],
|
43581
|
+
[
|
43582
|
+
/droid.+; (glass) \d/i
|
43583
|
+
// Google Glass
|
43584
|
+
],
|
43585
|
+
[MODEL, [VENDOR, GOOGLE], [TYPE2, WEARABLE]],
|
43586
|
+
[
|
43587
|
+
/droid.+; (wt63?0{2,3})\)/i
|
43588
|
+
],
|
43589
|
+
[MODEL, [VENDOR, ZEBRA], [TYPE2, WEARABLE]],
|
43590
|
+
[
|
43591
|
+
/(quest( 2| pro)?)/i
|
43592
|
+
// Oculus Quest
|
43593
|
+
],
|
43594
|
+
[MODEL, [VENDOR, FACEBOOK], [TYPE2, WEARABLE]],
|
43595
|
+
[
|
43596
|
+
///////////////////
|
43597
|
+
// EMBEDDED
|
43598
|
+
///////////////////
|
43599
|
+
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
|
43600
|
+
// Tesla
|
43601
|
+
],
|
43602
|
+
[VENDOR, [TYPE2, EMBEDDED]],
|
43603
|
+
[
|
43604
|
+
/(aeobc)\b/i
|
43605
|
+
// Echo Dot
|
43606
|
+
],
|
43607
|
+
[MODEL, [VENDOR, AMAZON], [TYPE2, EMBEDDED]],
|
43608
|
+
[
|
43609
|
+
////////////////////
|
43610
|
+
// MIXED (GENERIC)
|
43611
|
+
///////////////////
|
43612
|
+
/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i
|
43613
|
+
// Android Phones from Unidentified Vendors
|
43614
|
+
],
|
43615
|
+
[MODEL, [TYPE2, MOBILE]],
|
43616
|
+
[
|
43617
|
+
/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
|
43618
|
+
// Android Tablets from Unidentified Vendors
|
43619
|
+
],
|
43620
|
+
[MODEL, [TYPE2, TABLET]],
|
43621
|
+
[
|
43622
|
+
/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
|
43623
|
+
// Unidentifiable Tablet
|
43624
|
+
],
|
43625
|
+
[[TYPE2, TABLET]],
|
43626
|
+
[
|
43627
|
+
/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
|
43628
|
+
// Unidentifiable Mobile
|
43629
|
+
],
|
43630
|
+
[[TYPE2, MOBILE]],
|
43631
|
+
[
|
43632
|
+
/(android[-\w\. ]{0,9});.+buil/i
|
43633
|
+
// Generic Android Device
|
43634
|
+
],
|
43635
|
+
[MODEL, [VENDOR, "Generic"]]
|
43636
|
+
],
|
43637
|
+
engine: [
|
43638
|
+
[
|
43639
|
+
/windows.+ edge\/([\w\.]+)/i
|
43640
|
+
// EdgeHTML
|
43641
|
+
],
|
43642
|
+
[VERSION, [NAME, EDGE + "HTML"]],
|
43643
|
+
[
|
43644
|
+
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
|
43645
|
+
// Blink
|
43646
|
+
],
|
43647
|
+
[VERSION, [NAME, "Blink"]],
|
43648
|
+
[
|
43649
|
+
/(presto)\/([\w\.]+)/i,
|
43650
|
+
// Presto
|
43651
|
+
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
|
43652
|
+
// WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
43653
|
+
/ekioh(flow)\/([\w\.]+)/i,
|
43654
|
+
// Flow
|
43655
|
+
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
|
43656
|
+
// KHTML/Tasman/Links
|
43657
|
+
/(icab)[\/ ]([23]\.[\d\.]+)/i,
|
43658
|
+
// iCab
|
43659
|
+
/\b(libweb)/i
|
43660
|
+
],
|
43661
|
+
[NAME, VERSION],
|
43662
|
+
[
|
43663
|
+
/rv\:([\w\.]{1,9})\b.+(gecko)/i
|
43664
|
+
// Gecko
|
43665
|
+
],
|
43666
|
+
[VERSION, NAME]
|
43667
|
+
],
|
43668
|
+
os: [
|
43669
|
+
[
|
43670
|
+
// Windows
|
43671
|
+
/microsoft (windows) (vista|xp)/i
|
43672
|
+
// Windows (iTunes)
|
43673
|
+
],
|
43674
|
+
[NAME, VERSION],
|
43675
|
+
[
|
43676
|
+
/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i
|
43677
|
+
// Windows Phone
|
43678
|
+
],
|
43679
|
+
[NAME, [VERSION, strMapper, windowsVersionMap]],
|
43680
|
+
[
|
43681
|
+
/windows nt 6\.2; (arm)/i,
|
43682
|
+
// Windows RT
|
43683
|
+
/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
|
43684
|
+
/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
|
43685
|
+
],
|
43686
|
+
[[VERSION, strMapper, windowsVersionMap], [NAME, "Windows"]],
|
43687
|
+
[
|
43688
|
+
// iOS/macOS
|
43689
|
+
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
|
43690
|
+
// iOS
|
43691
|
+
/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
|
43692
|
+
/cfnetwork\/.+darwin/i
|
43693
|
+
],
|
43694
|
+
[[VERSION, /_/g, "."], [NAME, "iOS"]],
|
43695
|
+
[
|
43696
|
+
/(mac os x) ?([\w\. ]*)/i,
|
43697
|
+
/(macintosh|mac_powerpc\b)(?!.+haiku)/i
|
43698
|
+
// Mac OS
|
43699
|
+
],
|
43700
|
+
[[NAME, MAC_OS], [VERSION, /_/g, "."]],
|
43701
|
+
[
|
43702
|
+
// Mobile OSes
|
43703
|
+
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
|
43704
|
+
// Android-x86/HarmonyOS
|
43705
|
+
],
|
43706
|
+
[VERSION, NAME],
|
43707
|
+
[
|
43708
|
+
// Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
|
43709
|
+
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
|
43710
|
+
/(blackberry)\w*\/([\w\.]*)/i,
|
43711
|
+
// Blackberry
|
43712
|
+
/(tizen|kaios)[\/ ]([\w\.]+)/i,
|
43713
|
+
// Tizen/KaiOS
|
43714
|
+
/\((series40);/i
|
43715
|
+
// Series 40
|
43716
|
+
],
|
43717
|
+
[NAME, VERSION],
|
43718
|
+
[
|
43719
|
+
/\(bb(10);/i
|
43720
|
+
// BlackBerry 10
|
43721
|
+
],
|
43722
|
+
[VERSION, [NAME, BLACKBERRY]],
|
43723
|
+
[
|
43724
|
+
/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
|
43725
|
+
// Symbian
|
43726
|
+
],
|
43727
|
+
[VERSION, [NAME, "Symbian"]],
|
43728
|
+
[
|
43729
|
+
/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
|
43730
|
+
// Firefox OS
|
43731
|
+
],
|
43732
|
+
[VERSION, [NAME, FIREFOX + " OS"]],
|
43733
|
+
[
|
43734
|
+
/web0s;.+rt(tv)/i,
|
43735
|
+
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
|
43736
|
+
// WebOS
|
43737
|
+
],
|
43738
|
+
[VERSION, [NAME, "webOS"]],
|
43739
|
+
[
|
43740
|
+
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
|
43741
|
+
// watchOS
|
43742
|
+
],
|
43743
|
+
[VERSION, [NAME, "watchOS"]],
|
43744
|
+
[
|
43745
|
+
// Google Chromecast
|
43746
|
+
/crkey\/([\d\.]+)/i
|
43747
|
+
// Google Chromecast
|
43748
|
+
],
|
43749
|
+
[VERSION, [NAME, CHROME + "cast"]],
|
43750
|
+
[
|
43751
|
+
/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
|
43752
|
+
// Chromium OS
|
43753
|
+
],
|
43754
|
+
[[NAME, CHROMIUM_OS], VERSION],
|
43755
|
+
[
|
43756
|
+
// Smart TVs
|
43757
|
+
/panasonic;(viera)/i,
|
43758
|
+
// Panasonic Viera
|
43759
|
+
/(netrange)mmh/i,
|
43760
|
+
// Netrange
|
43761
|
+
/(nettv)\/(\d+\.[\w\.]+)/i,
|
43762
|
+
// NetTV
|
43763
|
+
// Console
|
43764
|
+
/(nintendo|playstation) ([wids345portablevuch]+)/i,
|
43765
|
+
// Nintendo/Playstation
|
43766
|
+
/(xbox); +xbox ([^\);]+)/i,
|
43767
|
+
// Microsoft Xbox (360, One, X, S, Series X, Series S)
|
43768
|
+
// Other
|
43769
|
+
/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
|
43770
|
+
// Joli/Palm
|
43771
|
+
/(mint)[\/\(\) ]?(\w*)/i,
|
43772
|
+
// Mint
|
43773
|
+
/(mageia|vectorlinux)[; ]/i,
|
43774
|
+
// Mageia/VectorLinux
|
43775
|
+
/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
|
43776
|
+
// Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
|
43777
|
+
/(hurd|linux) ?([\w\.]*)/i,
|
43778
|
+
// Hurd/Linux
|
43779
|
+
/(gnu) ?([\w\.]*)/i,
|
43780
|
+
// GNU
|
43781
|
+
/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
|
43782
|
+
// FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
|
43783
|
+
/(haiku) (\w+)/i
|
43784
|
+
// Haiku
|
43785
|
+
],
|
43786
|
+
[NAME, VERSION],
|
43787
|
+
[
|
43788
|
+
/(sunos) ?([\w\.\d]*)/i
|
43789
|
+
// Solaris
|
43790
|
+
],
|
43791
|
+
[[NAME, "Solaris"], VERSION],
|
43792
|
+
[
|
43793
|
+
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
|
43794
|
+
// Solaris
|
43795
|
+
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
|
43796
|
+
// AIX
|
43797
|
+
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
|
43798
|
+
// BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
|
43799
|
+
/(unix) ?([\w\.]*)/i
|
43800
|
+
// UNIX
|
43801
|
+
],
|
43802
|
+
[NAME, VERSION]
|
43803
|
+
]
|
43804
|
+
};
|
43805
|
+
var UAParser2 = function(ua, extensions) {
|
43806
|
+
if (typeof ua === OBJ_TYPE) {
|
43807
|
+
extensions = ua;
|
43808
|
+
ua = undefined2;
|
43809
|
+
}
|
43810
|
+
if (!(this instanceof UAParser2)) {
|
43811
|
+
return new UAParser2(ua, extensions).getResult();
|
43812
|
+
}
|
43813
|
+
var _navigator = typeof window2 !== UNDEF_TYPE && window2.navigator ? window2.navigator : undefined2;
|
43814
|
+
var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);
|
43815
|
+
var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined2;
|
43816
|
+
var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
|
43817
|
+
var _isSelfNav = _navigator && _navigator.userAgent == _ua;
|
43818
|
+
this.getBrowser = function() {
|
43819
|
+
var _browser = {};
|
43820
|
+
_browser[NAME] = undefined2;
|
43821
|
+
_browser[VERSION] = undefined2;
|
43822
|
+
rgxMapper.call(_browser, _ua, _rgxmap.browser);
|
43823
|
+
_browser[MAJOR] = majorize(_browser[VERSION]);
|
43824
|
+
if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
|
43825
|
+
_browser[NAME] = "Brave";
|
43826
|
+
}
|
43827
|
+
return _browser;
|
43828
|
+
};
|
43829
|
+
this.getCPU = function() {
|
43830
|
+
var _cpu = {};
|
43831
|
+
_cpu[ARCHITECTURE] = undefined2;
|
43832
|
+
rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
|
43833
|
+
return _cpu;
|
43834
|
+
};
|
43835
|
+
this.getDevice = function() {
|
43836
|
+
var _device = {};
|
43837
|
+
_device[VENDOR] = undefined2;
|
43838
|
+
_device[MODEL] = undefined2;
|
43839
|
+
_device[TYPE2] = undefined2;
|
43840
|
+
rgxMapper.call(_device, _ua, _rgxmap.device);
|
43841
|
+
if (_isSelfNav && !_device[TYPE2] && _uach && _uach.mobile) {
|
43842
|
+
_device[TYPE2] = MOBILE;
|
43843
|
+
}
|
43844
|
+
if (_isSelfNav && _device[MODEL] == "Macintosh" && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
|
43845
|
+
_device[MODEL] = "iPad";
|
43846
|
+
_device[TYPE2] = TABLET;
|
43847
|
+
}
|
43848
|
+
return _device;
|
43849
|
+
};
|
43850
|
+
this.getEngine = function() {
|
43851
|
+
var _engine = {};
|
43852
|
+
_engine[NAME] = undefined2;
|
43853
|
+
_engine[VERSION] = undefined2;
|
43854
|
+
rgxMapper.call(_engine, _ua, _rgxmap.engine);
|
43855
|
+
return _engine;
|
43856
|
+
};
|
43857
|
+
this.getOS = function() {
|
43858
|
+
var _os = {};
|
43859
|
+
_os[NAME] = undefined2;
|
43860
|
+
_os[VERSION] = undefined2;
|
43861
|
+
rgxMapper.call(_os, _ua, _rgxmap.os);
|
43862
|
+
if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != "Unknown") {
|
43863
|
+
_os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS);
|
43864
|
+
}
|
43865
|
+
return _os;
|
43866
|
+
};
|
43867
|
+
this.getResult = function() {
|
43868
|
+
return {
|
43869
|
+
ua: this.getUA(),
|
43870
|
+
browser: this.getBrowser(),
|
43871
|
+
engine: this.getEngine(),
|
43872
|
+
os: this.getOS(),
|
43873
|
+
device: this.getDevice(),
|
43874
|
+
cpu: this.getCPU()
|
43875
|
+
};
|
43876
|
+
};
|
43877
|
+
this.getUA = function() {
|
43878
|
+
return _ua;
|
43879
|
+
};
|
43880
|
+
this.setUA = function(ua2) {
|
43881
|
+
_ua = typeof ua2 === STR_TYPE && ua2.length > UA_MAX_LENGTH ? trim(ua2, UA_MAX_LENGTH) : ua2;
|
43882
|
+
return this;
|
43883
|
+
};
|
43884
|
+
this.setUA(_ua);
|
43885
|
+
return this;
|
43886
|
+
};
|
43887
|
+
UAParser2.VERSION = LIBVERSION;
|
43888
|
+
UAParser2.BROWSER = enumerize([NAME, VERSION, MAJOR]);
|
43889
|
+
UAParser2.CPU = enumerize([ARCHITECTURE]);
|
43890
|
+
UAParser2.DEVICE = enumerize([MODEL, VENDOR, TYPE2, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
|
43891
|
+
UAParser2.ENGINE = UAParser2.OS = enumerize([NAME, VERSION]);
|
43892
|
+
if (typeof exports !== UNDEF_TYPE) {
|
43893
|
+
if (typeof module2 !== UNDEF_TYPE && module2.exports) {
|
43894
|
+
exports = module2.exports = UAParser2;
|
43895
|
+
}
|
43896
|
+
exports.UAParser = UAParser2;
|
43897
|
+
} else {
|
43898
|
+
if (typeof define === FUNC_TYPE && define.amd) {
|
43899
|
+
define(function() {
|
43900
|
+
return UAParser2;
|
43901
|
+
});
|
43902
|
+
} else if (typeof window2 !== UNDEF_TYPE) {
|
43903
|
+
window2.UAParser = UAParser2;
|
43904
|
+
}
|
43905
|
+
}
|
43906
|
+
var $ = typeof window2 !== UNDEF_TYPE && (window2.jQuery || window2.Zepto);
|
43907
|
+
if ($ && !$.ua) {
|
43908
|
+
var parser = new UAParser2();
|
43909
|
+
$.ua = parser.getResult();
|
43910
|
+
$.ua.get = function() {
|
43911
|
+
return parser.getUA();
|
43912
|
+
};
|
43913
|
+
$.ua.set = function(ua) {
|
43914
|
+
parser.setUA(ua);
|
43915
|
+
var result = parser.getResult();
|
43916
|
+
for (var prop in result) {
|
43917
|
+
$.ua[prop] = result[prop];
|
43918
|
+
}
|
43919
|
+
};
|
43920
|
+
}
|
43921
|
+
})(typeof window === "object" ? window : exports);
|
43922
|
+
}
|
43923
|
+
});
|
43924
|
+
|
42600
43925
|
// ../../node_modules/use-debounce/dist/index.module.js
|
42601
43926
|
var index_module_exports = {};
|
42602
43927
|
__export(index_module_exports, {
|
@@ -44541,6 +45866,26 @@ var require_dist = __commonJS({
|
|
44541
45866
|
mod
|
44542
45867
|
));
|
44543
45868
|
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
|
45869
|
+
var __async2 = (__this, __arguments, generator) => {
|
45870
|
+
return new Promise((resolve, reject) => {
|
45871
|
+
var fulfilled = (value) => {
|
45872
|
+
try {
|
45873
|
+
step(generator.next(value));
|
45874
|
+
} catch (e2) {
|
45875
|
+
reject(e2);
|
45876
|
+
}
|
45877
|
+
};
|
45878
|
+
var rejected = (value) => {
|
45879
|
+
try {
|
45880
|
+
step(generator.throw(value));
|
45881
|
+
} catch (e2) {
|
45882
|
+
reject(e2);
|
45883
|
+
}
|
45884
|
+
};
|
45885
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
45886
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
45887
|
+
});
|
45888
|
+
};
|
44544
45889
|
var auto_frame_component_exports = {};
|
44545
45890
|
__export2(auto_frame_component_exports, {
|
44546
45891
|
default: () => AutoFrameComponent_default
|
@@ -44559,6 +45904,23 @@ var require_dist = __commonJS({
|
|
44559
45904
|
});
|
44560
45905
|
return collected;
|
44561
45906
|
};
|
45907
|
+
var getStyleSheet = (el) => {
|
45908
|
+
return Array.from(document.styleSheets).find((ss) => ss.ownerNode === el);
|
45909
|
+
};
|
45910
|
+
var getStyles2 = (styleSheet) => {
|
45911
|
+
if (styleSheet) {
|
45912
|
+
try {
|
45913
|
+
return [...styleSheet.cssRules].map((rule) => rule.cssText).join("");
|
45914
|
+
} catch (e2) {
|
45915
|
+
console.warn(
|
45916
|
+
"Access to stylesheet %s is denied. Ignoring\u2026",
|
45917
|
+
styleSheet.href
|
45918
|
+
);
|
45919
|
+
}
|
45920
|
+
}
|
45921
|
+
return "";
|
45922
|
+
};
|
45923
|
+
var defer = (fn) => setTimeout(fn, 0);
|
44562
45924
|
var CopyHostStyles = ({
|
44563
45925
|
children,
|
44564
45926
|
debug = false,
|
@@ -44573,7 +45935,7 @@ var require_dist = __commonJS({
|
|
44573
45935
|
const elements = [];
|
44574
45936
|
const lookupEl = (el) => elements.findIndex((elementMap) => elementMap.original === el);
|
44575
45937
|
const addEl = (el, onLoad = () => {
|
44576
|
-
}) => {
|
45938
|
+
}) => __async2(void 0, null, function* () {
|
44577
45939
|
const index = lookupEl(el);
|
44578
45940
|
if (index > -1) {
|
44579
45941
|
if (debug)
|
@@ -44584,10 +45946,34 @@ var require_dist = __commonJS({
|
|
44584
45946
|
onLoad();
|
44585
45947
|
return;
|
44586
45948
|
}
|
44587
|
-
|
45949
|
+
let mirror;
|
45950
|
+
if (el.nodeName === "LINK") {
|
45951
|
+
mirror = document.createElement("style");
|
45952
|
+
mirror.type = "text/css";
|
45953
|
+
let styleSheet = getStyleSheet(el);
|
45954
|
+
if (!styleSheet) {
|
45955
|
+
yield new Promise((resolve) => el.onload = resolve);
|
45956
|
+
styleSheet = getStyleSheet(el);
|
45957
|
+
}
|
45958
|
+
const styles = getStyles2(styleSheet);
|
45959
|
+
if (!styles) {
|
45960
|
+
if (debug) {
|
45961
|
+
console.warn(
|
45962
|
+
`Tried to load styles for link element, but couldn't find them. Skipping...`
|
45963
|
+
);
|
45964
|
+
}
|
45965
|
+
onLoad();
|
45966
|
+
return;
|
45967
|
+
}
|
45968
|
+
mirror.innerHTML = styles;
|
45969
|
+
mirror.setAttribute("data-href", el.getAttribute("href"));
|
45970
|
+
} else {
|
45971
|
+
mirror = el.cloneNode(true);
|
45972
|
+
}
|
45973
|
+
const elHash = (0, import_object_hash.default)(mirror.outerHTML);
|
44588
45974
|
const existingHashes = collectStyles(doc).map(
|
44589
|
-
(existingStyle) => (0, import_object_hash.default)(existingStyle.outerHTML)
|
44590
|
-
);
|
45975
|
+
(existingStyle) => existingStyle !== mirror && (0, import_object_hash.default)(existingStyle.outerHTML)
|
45976
|
+
).filter(Boolean);
|
44591
45977
|
if (existingHashes.indexOf(elHash) > -1) {
|
44592
45978
|
if (debug)
|
44593
45979
|
console.log(
|
@@ -44596,13 +45982,12 @@ var require_dist = __commonJS({
|
|
44596
45982
|
onLoad();
|
44597
45983
|
return;
|
44598
45984
|
}
|
44599
|
-
const mirror = el.cloneNode(true);
|
44600
45985
|
mirror.onload = onLoad;
|
44601
45986
|
doc.head.append(mirror);
|
44602
45987
|
elements.push({ original: el, mirror });
|
44603
45988
|
if (debug)
|
44604
45989
|
console.log(`Added style node ${el.outerHTML}`);
|
44605
|
-
};
|
45990
|
+
});
|
44606
45991
|
const removeEl = (el) => {
|
44607
45992
|
const index = lookupEl(el);
|
44608
45993
|
if (index === -1) {
|
@@ -44623,7 +46008,7 @@ var require_dist = __commonJS({
|
|
44623
46008
|
if (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE) {
|
44624
46009
|
const el = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
|
44625
46010
|
if (el && el.matches(styleSelector)) {
|
44626
|
-
addEl(el);
|
46011
|
+
defer(() => addEl(el));
|
44627
46012
|
}
|
44628
46013
|
}
|
44629
46014
|
});
|
@@ -44631,7 +46016,7 @@ var require_dist = __commonJS({
|
|
44631
46016
|
if (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE) {
|
44632
46017
|
const el = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
|
44633
46018
|
if (el && el.matches(styleSelector)) {
|
44634
|
-
removeEl(el);
|
46019
|
+
defer(() => removeEl(el));
|
44635
46020
|
}
|
44636
46021
|
}
|
44637
46022
|
});
|
@@ -44642,12 +46027,14 @@ var require_dist = __commonJS({
|
|
44642
46027
|
const collectedStyles = collectStyles(parentDocument);
|
44643
46028
|
let mountedCounter = 0;
|
44644
46029
|
collectedStyles.forEach((styleNode) => {
|
44645
|
-
|
44646
|
-
|
44647
|
-
|
44648
|
-
|
44649
|
-
|
44650
|
-
|
46030
|
+
defer(
|
46031
|
+
() => addEl(styleNode, () => {
|
46032
|
+
mountedCounter += 1;
|
46033
|
+
if (mountedCounter === collectedStyles.length) {
|
46034
|
+
onStylesLoaded();
|
46035
|
+
}
|
46036
|
+
})
|
46037
|
+
);
|
44651
46038
|
});
|
44652
46039
|
observer.observe(parentDocument.head, { childList: true, subtree: true });
|
44653
46040
|
return () => {
|
@@ -44656,10 +46043,14 @@ var require_dist = __commonJS({
|
|
44656
46043
|
}, []);
|
44657
46044
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children });
|
44658
46045
|
};
|
44659
|
-
var
|
44660
|
-
|
44661
|
-
|
44662
|
-
|
46046
|
+
var AutoFrameComponent = import_react22.default.forwardRef(
|
46047
|
+
function(_a3, ref2) {
|
46048
|
+
var _b = _a3, { children, debug, onStylesLoaded } = _b, props = __objRest2(_b, ["children", "debug", "onStylesLoaded"]);
|
46049
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_frame_component.default, __spreadProps2(__spreadValues2({}, props), { ref: ref2, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyHostStyles, { debug, onStylesLoaded, children }) }));
|
46050
|
+
}
|
46051
|
+
);
|
46052
|
+
AutoFrameComponent.displayName = "AutoFrameComponent";
|
46053
|
+
var AutoFrameComponent_default = AutoFrameComponent;
|
44663
46054
|
}
|
44664
46055
|
});
|
44665
46056
|
|
@@ -74400,6 +75791,7 @@ var require_dist2 = __commonJS({
|
|
74400
75791
|
{ width: 768, height: "auto", icon: "Tablet", label: "Medium" },
|
74401
75792
|
{ width: 1280, height: "auto", icon: "Monitor", label: "Large" }
|
74402
75793
|
];
|
75794
|
+
var import_ua_parser_js2 = require_ua_parser();
|
74403
75795
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
74404
75796
|
var defaultAppState2 = {
|
74405
75797
|
data: { content: [], root: { props: { title: "" } } },
|
@@ -74439,7 +75831,8 @@ var require_dist2 = __commonJS({
|
|
74439
75831
|
setZoomConfig: () => null,
|
74440
75832
|
status: "LOADING",
|
74441
75833
|
setStatus: () => null,
|
74442
|
-
iframe: {}
|
75834
|
+
iframe: {},
|
75835
|
+
safariFallbackMode: false
|
74443
75836
|
};
|
74444
75837
|
var appContext2 = (0, import_react32.createContext)(defaultContext2);
|
74445
75838
|
var AppProvider = ({
|
@@ -74451,10 +75844,34 @@ var require_dist2 = __commonJS({
|
|
74451
75844
|
(0, import_react32.useEffect)(() => {
|
74452
75845
|
setStatus("MOUNTED");
|
74453
75846
|
}, []);
|
75847
|
+
const [safariFallbackMode, setSafariFallbackMode] = (0, import_react32.useState)(false);
|
75848
|
+
(0, import_react32.useEffect)(() => {
|
75849
|
+
var _a3, _b, _c;
|
75850
|
+
const ua = new import_ua_parser_js2.UAParser(navigator.userAgent);
|
75851
|
+
const { browser } = ua.getResult();
|
75852
|
+
if (browser.name === "Safari" && (((_a3 = browser.version) == null ? void 0 : _a3.indexOf("17.2.")) || ((_b = browser.version) == null ? void 0 : _b.indexOf("17.3.")) || ((_c = browser.version) == null ? void 0 : _c.indexOf("17.4.")))) {
|
75853
|
+
if (process.env.NODE_ENV !== "production" && value.iframe.enabled) {
|
75854
|
+
console.warn(
|
75855
|
+
`Detected Safari ${browser.version}, which contains a bug that prevents Puck DropZones from detecting a mouseover event within an iframe. This affects Safari versions 17.2, 17.3 and 17.4.
|
75856
|
+
|
75857
|
+
Running in compatibility mode, which may have some DropZone side-effects. Alternatively, consider disabling iframes: https://puckeditor.com/docs/integrating-puck/viewports#opting-out-of-iframes.
|
75858
|
+
|
75859
|
+
See https://github.com/measuredco/puck/issues/411 for more information. This message will not show in production.`
|
75860
|
+
);
|
75861
|
+
}
|
75862
|
+
setSafariFallbackMode(true);
|
75863
|
+
}
|
75864
|
+
}, []);
|
74454
75865
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
74455
75866
|
appContext2.Provider,
|
74456
75867
|
{
|
74457
|
-
value: __spreadProps2(__spreadValues2({}, value), {
|
75868
|
+
value: __spreadProps2(__spreadValues2({}, value), {
|
75869
|
+
zoomConfig,
|
75870
|
+
setZoomConfig,
|
75871
|
+
status,
|
75872
|
+
setStatus,
|
75873
|
+
safariFallbackMode
|
75874
|
+
}),
|
74458
75875
|
children
|
74459
75876
|
}
|
74460
75877
|
);
|
@@ -75176,7 +76593,11 @@ var require_dist2 = __commonJS({
|
|
75176
76593
|
let isEnabled = userWillDrag;
|
75177
76594
|
if (userIsDragging) {
|
75178
76595
|
if (draggingNewComponent) {
|
75179
|
-
|
76596
|
+
if (appContext22.safariFallbackMode) {
|
76597
|
+
isEnabled = true;
|
76598
|
+
} else {
|
76599
|
+
isEnabled = hoveringOverArea;
|
76600
|
+
}
|
75180
76601
|
} else {
|
75181
76602
|
isEnabled = draggingOverArea && hoveringOverZone;
|
75182
76603
|
}
|
@@ -78957,6 +80378,7 @@ var defaultViewports = [
|
|
78957
80378
|
];
|
78958
80379
|
|
78959
80380
|
// ../core/components/Puck/context.tsx
|
80381
|
+
var import_ua_parser_js = __toESM(require_ua_parser());
|
78960
80382
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
78961
80383
|
var defaultAppState = {
|
78962
80384
|
data: { content: [], root: { props: { title: "" } } },
|
@@ -78996,7 +80418,8 @@ var defaultContext = {
|
|
78996
80418
|
setZoomConfig: () => null,
|
78997
80419
|
status: "LOADING",
|
78998
80420
|
setStatus: () => null,
|
78999
|
-
iframe: {}
|
80421
|
+
iframe: {},
|
80422
|
+
safariFallbackMode: false
|
79000
80423
|
};
|
79001
80424
|
var appContext = (0, import_react10.createContext)(defaultContext);
|
79002
80425
|
function useAppContext() {
|