{
  "version": 3,
  "sources": ["../../src/utils/device-type.js"],
  "sourcesContent": ["import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';\nimport { unlock } from '../lock-unlock';\n\nconst { getViewportBreakpoints, getViewportBreakpointValueInPixels } = unlock(\n\tglobalStylesEnginePrivateApis\n);\n\nconst VIEWPORT_KEY_BY_DEVICE_TYPE = {\n\tTablet: 'tablet',\n\tMobile: 'mobile',\n};\n\nconst DESKTOP_DEVICE_TYPE = 'Desktop';\nconst TABLET_DEVICE_TYPE = 'Tablet';\nconst MOBILE_DEVICE_TYPE = 'Mobile';\nconst DEVICE_PREVIEW_WIDTH_OFFSET = 1;\n\n/**\n * Maps a device preview type to its corresponding viewport style state. Used\n * when Responsive editing is enabled so the device preview drives which\n * viewport block style edits are applied to.\n *\n * @type {Object}\n */\nexport const VIEWPORT_STATE_BY_DEVICE_TYPE = {\n\tDesktop: 'default',\n\tTablet: '@tablet',\n\tMobile: '@mobile',\n};\n\n/**\n * Gets the most appropriate device type based on the canvas width.\n *\n * @param {number|string|undefined} canvasWidth      The canvas width.\n * @param {Object}                  viewportSettings Optional viewport breakpoint settings.\n * @return {string} The device type.\n */\nexport function getDeviceTypeByCanvasWidth( canvasWidth, viewportSettings ) {\n\tconst width = getViewportBreakpointValueInPixels( canvasWidth );\n\tconst breakpoints = getViewportBreakpoints( viewportSettings );\n\n\t// Mobile\n\tif (\n\t\twidth &&\n\t\twidth <= getViewportBreakpointValueInPixels( breakpoints.mobile )\n\t) {\n\t\treturn MOBILE_DEVICE_TYPE;\n\t}\n\t// Tablet\n\tif (\n\t\twidth &&\n\t\twidth <= getViewportBreakpointValueInPixels( breakpoints.tablet )\n\t) {\n\t\treturn TABLET_DEVICE_TYPE;\n\t}\n\t// Desktop\n\treturn DESKTOP_DEVICE_TYPE;\n}\n\n/**\n * Gets the canvas width for a device preview. The preview is inset from its\n * breakpoint to avoid browser zoom rounding the iframe viewport outside the\n * intended media query.\n *\n * @param {string} deviceType       The device type.\n * @param {Object} viewportSettings Optional viewport breakpoint settings.\n * @return {number|undefined} The device preview width in pixels.\n */\nexport function getCanvasWidthByDeviceType( deviceType, viewportSettings ) {\n\tconst viewportKey = VIEWPORT_KEY_BY_DEVICE_TYPE[ deviceType ];\n\n\tif ( ! viewportKey ) {\n\t\treturn undefined;\n\t}\n\n\tconst breakpoints = getViewportBreakpoints( viewportSettings );\n\tconst width = getViewportBreakpointValueInPixels(\n\t\tbreakpoints[ viewportKey ]\n\t);\n\n\tif ( width === undefined ) {\n\t\treturn undefined;\n\t}\n\n\tlet lowerBreakpoint = 0;\n\tif ( deviceType === TABLET_DEVICE_TYPE ) {\n\t\tlowerBreakpoint =\n\t\t\tgetViewportBreakpointValueInPixels( breakpoints.mobile ) ?? 0;\n\t}\n\tconst offset = Math.min(\n\t\tDEVICE_PREVIEW_WIDTH_OFFSET,\n\t\t( width - lowerBreakpoint ) / 2\n\t);\n\n\treturn width - offset;\n}\n"],
  "mappings": ";AAAA,SAAS,eAAe,qCAAqC;AAC7D,SAAS,cAAc;AAEvB,IAAM,EAAE,wBAAwB,mCAAmC,IAAI;AAAA,EACtE;AACD;AAEA,IAAM,8BAA8B;AAAA,EACnC,QAAQ;AAAA,EACR,QAAQ;AACT;AAEA,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B;AAS7B,IAAM,gCAAgC;AAAA,EAC5C,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACT;AASO,SAAS,2BAA4B,aAAa,kBAAmB;AAC3E,QAAM,QAAQ,mCAAoC,WAAY;AAC9D,QAAM,cAAc,uBAAwB,gBAAiB;AAG7D,MACC,SACA,SAAS,mCAAoC,YAAY,MAAO,GAC/D;AACD,WAAO;AAAA,EACR;AAEA,MACC,SACA,SAAS,mCAAoC,YAAY,MAAO,GAC/D;AACD,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAWO,SAAS,2BAA4B,YAAY,kBAAmB;AAC1E,QAAM,cAAc,4BAA6B,UAAW;AAE5D,MAAK,CAAE,aAAc;AACpB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,uBAAwB,gBAAiB;AAC7D,QAAM,QAAQ;AAAA,IACb,YAAa,WAAY;AAAA,EAC1B;AAEA,MAAK,UAAU,QAAY;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,kBAAkB;AACtB,MAAK,eAAe,oBAAqB;AACxC,sBACC,mCAAoC,YAAY,MAAO,KAAK;AAAA,EAC9D;AACA,QAAM,SAAS,KAAK;AAAA,IACnB;AAAA,KACE,QAAQ,mBAAoB;AAAA,EAC/B;AAEA,SAAO,QAAQ;AAChB;",
  "names": []
}
