casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 3.34 kB
Source Map (JSON)
{"version":3,"file":"printWindow.mjs","sources":["../../../../../../packages/components/controls/print/printWindow.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-04-06 16:01:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\print\\printWindow.ts\n */\nimport defer from 'casc-cesium-utils/defer'\n\n/**\n * Tells the web browser to print a given window, which my be an iframe window, and\n * returns a promise that resolves when printing is safely over so that, for example\n * the window can be removed.\n * @param {Window} windowToPrint The window to print.\n * @returns {Promise} A promise that resolves when printing is safely over. The prommise is rejected if\n * there is no indication that the browser's print\n */\nfunction printWindow(windowToPrint) {\n const deferred = defer()\n let printInProgressCount = 0\n\n const timeout = setTimeout(function () {\n deferred.reject(false)\n }, 10000)\n\n function cancelTimeout() {\n clearTimeout(timeout)\n }\n\n function resolveIfZero() {\n if (printInProgressCount <= 0) {\n deferred.resolve()\n }\n }\n\n if (windowToPrint.matchMedia) {\n windowToPrint.matchMedia('print').addListener(function (evt) {\n cancelTimeout()\n if (evt.matches) {\n ++printInProgressCount\n } else {\n --printInProgressCount\n resolveIfZero()\n }\n })\n }\n\n windowToPrint.onbeforeprint = function () {\n cancelTimeout()\n ++printInProgressCount\n }\n windowToPrint.onafterprint = function () {\n cancelTimeout()\n --printInProgressCount\n resolveIfZero()\n }\n\n // First try printing with execCommand, because, in IE11, `printWindow.print()`\n // prints the entire page instead of just the embedded iframe (if the window\n // is an iframe, anyway).\n const result = windowToPrint.document.execCommand('print', true, null)\n if (!result) {\n windowToPrint.print()\n }\n\n return deferred.promise\n}\n\nexport default printWindow\n"],"names":[],"mappings":";;AACA,SAAS,WAAW,CAAC,aAAa,EAAE;AACpC,EAAE,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;AAC3B,EAAE,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC/B,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW;AACxC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,EAAE,GAAG,CAAC,CAAC;AACV,EAAE,SAAS,aAAa,GAAG;AAC3B,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,SAAS,aAAa,GAAG;AAC3B,IAAI,IAAI,oBAAoB,IAAI,CAAC,EAAE;AACnC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH,EAAE,IAAI,aAAa,CAAC,UAAU,EAAE;AAChC,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,EAAE;AAChE,MAAM,aAAa,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AACvB,QAAQ,EAAE,oBAAoB,CAAC;AAC/B,OAAO,MAAM;AACb,QAAQ,EAAE,oBAAoB,CAAC;AAC/B,QAAQ,aAAa,EAAE,CAAC;AACxB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,CAAC,aAAa,GAAG,WAAW;AAC3C,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,EAAE,oBAAoB,CAAC;AAC3B,GAAG,CAAC;AACJ,EAAE,aAAa,CAAC,YAAY,GAAG,WAAW;AAC1C,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,EAAE,oBAAoB,CAAC;AAC3B,IAAI,aAAa,EAAE,CAAC;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B;;;;"}