@measured/puck-plugin-heading-analyzer 0.14.2-canary.64303c8 → 0.14.2-canary.78047de
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 +1387 -15
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -35204,6 +35204,26 @@ function getFurthestAway({
|
|
35204
35204
|
}).sort((a2, b) => b.distance - a2.distance);
|
35205
35205
|
return sorted[0] ? sorted[0].id : null;
|
35206
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
|
+
}
|
35207
35227
|
function getDroppableOver({
|
35208
35228
|
pageBorderBox,
|
35209
35229
|
draggable: draggable2,
|
@@ -35244,10 +35264,14 @@ function getDroppableOver({
|
|
35244
35264
|
if (candidates.length === 1) {
|
35245
35265
|
return candidates[0].descriptor.id;
|
35246
35266
|
}
|
35267
|
+
const normalizedCandidates = normalizeFamilies(pageBorderBox, candidates);
|
35268
|
+
if (normalizedCandidates.length === 1) {
|
35269
|
+
return normalizedCandidates[0].descriptor.id;
|
35270
|
+
}
|
35247
35271
|
return getFurthestAway({
|
35248
35272
|
pageBorderBox,
|
35249
35273
|
draggable: draggable2,
|
35250
|
-
candidates
|
35274
|
+
candidates: normalizedCandidates
|
35251
35275
|
});
|
35252
35276
|
}
|
35253
35277
|
function getIsDisplaced({
|
@@ -35470,7 +35494,10 @@ function querySelectorAllIframe(selector) {
|
|
35470
35494
|
iframes = iframes.filter((iframe) => iframe.hasAttribute("data-rfd-iframe"));
|
35471
35495
|
iframeCache.set("iframes", iframes);
|
35472
35496
|
}
|
35473
|
-
const iframePossible = iframes.reduce((acc, iframe) =>
|
35497
|
+
const iframePossible = iframes.reduce((acc, iframe) => {
|
35498
|
+
var _a3;
|
35499
|
+
return [...acc, ...((_a3 = iframe.contentWindow) == null ? void 0 : _a3.document) ? querySelectorAll(iframe.contentWindow.document, selector) : []];
|
35500
|
+
}, []);
|
35474
35501
|
return [...querySelectorAll(document, selector), ...iframePossible];
|
35475
35502
|
}
|
35476
35503
|
function useStyleMarshal(contextId, nonce) {
|
@@ -35492,7 +35519,10 @@ function useStyleMarshal(contextId, nonce) {
|
|
35492
35519
|
useLayoutEffect2(() => {
|
35493
35520
|
const alwaysSelector = `[${alwaysDataAttr}="${contextId}"]`;
|
35494
35521
|
const dynamicSelector = `[${dynamicDataAttr}="${contextId}"]`;
|
35495
|
-
const heads = [getHead(document), ...querySelectorAll(document, `[${prefix2}-iframe]`).
|
35522
|
+
const heads = [getHead(document), ...querySelectorAll(document, `[${prefix2}-iframe]`).filter((iframe) => {
|
35523
|
+
var _a3;
|
35524
|
+
return (_a3 = iframe.contentWindow) == null ? void 0 : _a3.document;
|
35525
|
+
}).map((iframe) => getHead(iframe.contentWindow.document))];
|
35496
35526
|
heads.forEach((head) => {
|
35497
35527
|
if (!head)
|
35498
35528
|
return;
|
@@ -37612,7 +37642,7 @@ function getBody() {
|
|
37612
37642
|
!document.body ? process.env.NODE_ENV !== "production" ? invariant2(false, "document.body is not ready") : invariant2(false) : void 0;
|
37613
37643
|
return document.body;
|
37614
37644
|
}
|
37615
|
-
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, 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;
|
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;
|
37616
37646
|
var init_dnd_esm = __esm({
|
37617
37647
|
"../../node_modules/@measured/dnd/dist/dnd.esm.js"() {
|
37618
37648
|
init_react_import();
|
@@ -41981,7 +42011,8 @@ var init_dnd_esm = __esm({
|
|
41981
42011
|
client,
|
41982
42012
|
page,
|
41983
42013
|
closest: closest2,
|
41984
|
-
transform
|
42014
|
+
transform,
|
42015
|
+
parents
|
41985
42016
|
}) => {
|
41986
42017
|
const frame = (() => {
|
41987
42018
|
if (!closest2) {
|
@@ -42030,7 +42061,8 @@ var init_dnd_esm = __esm({
|
|
42030
42061
|
page,
|
42031
42062
|
frame,
|
42032
42063
|
subject,
|
42033
|
-
transform
|
42064
|
+
transform,
|
42065
|
+
parents
|
42034
42066
|
};
|
42035
42067
|
return dimension;
|
42036
42068
|
};
|
@@ -42067,6 +42099,27 @@ var init_dnd_esm = __esm({
|
|
42067
42099
|
});
|
42068
42100
|
return client;
|
42069
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
|
+
};
|
42070
42123
|
getDimension = ({
|
42071
42124
|
ref: ref2,
|
42072
42125
|
descriptor,
|
@@ -42102,6 +42155,7 @@ var init_dnd_esm = __esm({
|
|
42102
42155
|
shouldClipSubject
|
42103
42156
|
};
|
42104
42157
|
})();
|
42158
|
+
const parents = getParents(ref2);
|
42105
42159
|
const dimension = getDroppableDimension({
|
42106
42160
|
descriptor,
|
42107
42161
|
isEnabled: !isDropDisabled,
|
@@ -42111,7 +42165,8 @@ var init_dnd_esm = __esm({
|
|
42111
42165
|
client,
|
42112
42166
|
page,
|
42113
42167
|
closest: closest2,
|
42114
|
-
transform
|
42168
|
+
transform,
|
42169
|
+
parents
|
42115
42170
|
});
|
42116
42171
|
return dimension;
|
42117
42172
|
};
|
@@ -42582,6 +42637,1291 @@ var init_dnd_esm = __esm({
|
|
42582
42637
|
}
|
42583
42638
|
});
|
42584
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
|
+
|
42585
43925
|
// ../../node_modules/use-debounce/dist/index.module.js
|
42586
43926
|
var index_module_exports = {};
|
42587
43927
|
__export(index_module_exports, {
|
@@ -74385,6 +75725,7 @@ var require_dist2 = __commonJS({
|
|
74385
75725
|
{ width: 768, height: "auto", icon: "Tablet", label: "Medium" },
|
74386
75726
|
{ width: 1280, height: "auto", icon: "Monitor", label: "Large" }
|
74387
75727
|
];
|
75728
|
+
var import_ua_parser_js2 = require_ua_parser();
|
74388
75729
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
74389
75730
|
var defaultAppState2 = {
|
74390
75731
|
data: { content: [], root: { props: { title: "" } } },
|
@@ -74424,7 +75765,8 @@ var require_dist2 = __commonJS({
|
|
74424
75765
|
setZoomConfig: () => null,
|
74425
75766
|
status: "LOADING",
|
74426
75767
|
setStatus: () => null,
|
74427
|
-
iframe: {}
|
75768
|
+
iframe: {},
|
75769
|
+
safariFallbackMode: false
|
74428
75770
|
};
|
74429
75771
|
var appContext2 = (0, import_react32.createContext)(defaultContext2);
|
74430
75772
|
var AppProvider = ({
|
@@ -74436,10 +75778,34 @@ var require_dist2 = __commonJS({
|
|
74436
75778
|
(0, import_react32.useEffect)(() => {
|
74437
75779
|
setStatus("MOUNTED");
|
74438
75780
|
}, []);
|
75781
|
+
const [safariFallbackMode, setSafariFallbackMode] = (0, import_react32.useState)(false);
|
75782
|
+
(0, import_react32.useEffect)(() => {
|
75783
|
+
var _a3, _b, _c;
|
75784
|
+
const ua = new import_ua_parser_js2.UAParser(navigator.userAgent);
|
75785
|
+
const { browser } = ua.getResult();
|
75786
|
+
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.")))) {
|
75787
|
+
if (process.env.NODE_ENV !== "production" && value.iframe.enabled) {
|
75788
|
+
console.warn(
|
75789
|
+
`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.
|
75790
|
+
|
75791
|
+
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.
|
75792
|
+
|
75793
|
+
See https://github.com/measuredco/puck/issues/411 for more information. This message will not show in production.`
|
75794
|
+
);
|
75795
|
+
}
|
75796
|
+
setSafariFallbackMode(true);
|
75797
|
+
}
|
75798
|
+
}, []);
|
74439
75799
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
74440
75800
|
appContext2.Provider,
|
74441
75801
|
{
|
74442
|
-
value: __spreadProps2(__spreadValues2({}, value), {
|
75802
|
+
value: __spreadProps2(__spreadValues2({}, value), {
|
75803
|
+
zoomConfig,
|
75804
|
+
setZoomConfig,
|
75805
|
+
status,
|
75806
|
+
setStatus,
|
75807
|
+
safariFallbackMode
|
75808
|
+
}),
|
74443
75809
|
children
|
74444
75810
|
}
|
74445
75811
|
);
|
@@ -74635,7 +76001,7 @@ var require_dist2 = __commonJS({
|
|
74635
76001
|
var import_react72 = require("react");
|
74636
76002
|
var import_dnd3 = (init_dnd_esm(), __toCommonJS(dnd_esm_exports));
|
74637
76003
|
init_react_import2();
|
74638
|
-
var styles_module_default32 = { "DraggableComponent": "
|
76004
|
+
var styles_module_default32 = { "DraggableComponent": "_DraggableComponent_59z7f_1", "DraggableComponent--isDragging": "_DraggableComponent--isDragging_59z7f_11", "DraggableComponent-contents": "_DraggableComponent-contents_59z7f_16", "DraggableComponent-overlay": "_DraggableComponent-overlay_59z7f_29", "DraggableComponent-loadingOverlay": "_DraggableComponent-loadingOverlay_59z7f_49", "DraggableComponent--isLocked": "_DraggableComponent--isLocked_59z7f_65", "DraggableComponent--forceHover": "_DraggableComponent--forceHover_59z7f_71", "DraggableComponent--isSelected": "_DraggableComponent--isSelected_59z7f_76", "DraggableComponent--indicativeHover": "_DraggableComponent--indicativeHover_59z7f_81", "DraggableComponent-actionsOverlay": "_DraggableComponent-actionsOverlay_59z7f_97", "DraggableComponent-actions": "_DraggableComponent-actions_59z7f_97", "DraggableComponent-actionsLabel": "_DraggableComponent-actionsLabel_59z7f_127", "DraggableComponent-action": "_DraggableComponent-action_59z7f_97" };
|
74639
76005
|
init_react_import2();
|
74640
76006
|
init_react_import2();
|
74641
76007
|
var import_react52 = require("react");
|
@@ -74976,7 +76342,7 @@ var require_dist2 = __commonJS({
|
|
74976
76342
|
);
|
74977
76343
|
};
|
74978
76344
|
init_react_import2();
|
74979
|
-
var styles_module_default42 = { "DropZone": "
|
76345
|
+
var styles_module_default42 = { "DropZone": "_DropZone_djoti_1", "DropZone-content": "_DropZone-content_djoti_10", "DropZone--userIsDragging": "_DropZone--userIsDragging_djoti_15", "DropZone--draggingOverArea": "_DropZone--draggingOverArea_djoti_19", "DropZone--draggingNewComponent": "_DropZone--draggingNewComponent_djoti_20", "DropZone--isAreaSelected": "_DropZone--isAreaSelected_djoti_26", "DropZone--hoveringOverArea": "_DropZone--hoveringOverArea_djoti_27", "DropZone--isDisabled": "_DropZone--isDisabled_djoti_28", "DropZone--isRootZone": "_DropZone--isRootZone_djoti_29", "DropZone--hasChildren": "_DropZone--hasChildren_djoti_30", "DropZone--isDestination": "_DropZone--isDestination_djoti_40", "DropZone-item": "_DropZone-item_djoti_52", "DropZone-hitbox": "_DropZone-hitbox_djoti_56" };
|
74980
76346
|
init_react_import2();
|
74981
76347
|
var import_react82 = require("react");
|
74982
76348
|
var import_use_debounce = (init_index_module(), __toCommonJS(index_module_exports));
|
@@ -75161,7 +76527,11 @@ var require_dist2 = __commonJS({
|
|
75161
76527
|
let isEnabled = userWillDrag;
|
75162
76528
|
if (userIsDragging) {
|
75163
76529
|
if (draggingNewComponent) {
|
75164
|
-
|
76530
|
+
if (appContext22.safariFallbackMode) {
|
76531
|
+
isEnabled = true;
|
76532
|
+
} else {
|
76533
|
+
isEnabled = hoveringOverArea;
|
76534
|
+
}
|
75165
76535
|
} else {
|
75166
76536
|
isEnabled = draggingOverArea && hoveringOverZone;
|
75167
76537
|
}
|
@@ -76927,7 +78297,7 @@ var require_dist2 = __commonJS({
|
|
76927
78297
|
disabled: readOnly,
|
76928
78298
|
onChange: (e2) => {
|
76929
78299
|
if (e2.currentTarget.value === "true" || e2.currentTarget.value === "false") {
|
76930
|
-
onChange(
|
78300
|
+
onChange(JSON.parse(e2.currentTarget.value));
|
76931
78301
|
return;
|
76932
78302
|
}
|
76933
78303
|
onChange(e2.currentTarget.value);
|
@@ -77422,7 +78792,7 @@ var require_dist2 = __commonJS({
|
|
77422
78792
|
var import_react222 = require("react");
|
77423
78793
|
var import_auto_frame_component = __toESM2(require_dist());
|
77424
78794
|
init_react_import2();
|
77425
|
-
var styles_module_default16 = { "PuckPreview": "
|
78795
|
+
var styles_module_default16 = { "PuckPreview": "_PuckPreview_rxwlr_1", "PuckPreview-frame": "_PuckPreview-frame_rxwlr_5" };
|
77426
78796
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
77427
78797
|
var getClassName21 = get_class_name_factory_default2("PuckPreview", styles_module_default16);
|
77428
78798
|
var Preview = ({ id = "puck-preview" }) => {
|
@@ -78942,6 +80312,7 @@ var defaultViewports = [
|
|
78942
80312
|
];
|
78943
80313
|
|
78944
80314
|
// ../core/components/Puck/context.tsx
|
80315
|
+
var import_ua_parser_js = __toESM(require_ua_parser());
|
78945
80316
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
78946
80317
|
var defaultAppState = {
|
78947
80318
|
data: { content: [], root: { props: { title: "" } } },
|
@@ -78981,7 +80352,8 @@ var defaultContext = {
|
|
78981
80352
|
setZoomConfig: () => null,
|
78982
80353
|
status: "LOADING",
|
78983
80354
|
setStatus: () => null,
|
78984
|
-
iframe: {}
|
80355
|
+
iframe: {},
|
80356
|
+
safariFallbackMode: false
|
78985
80357
|
};
|
78986
80358
|
var appContext = (0, import_react10.createContext)(defaultContext);
|
78987
80359
|
function useAppContext() {
|