neko-ui 2.9.2 → 2.9.4
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/es/avatar/favicon.svg +0 -0
- package/es/avatar/group.js +17 -18
- package/es/avatar/group.js.map +1 -1
- package/es/avatar/index.js +1 -2
- package/es/avatar/index.js.map +1 -1
- package/es/avatar/style.js +1 -2
- package/es/avatar/style.js.map +1 -1
- package/es/back-top/index.js +1 -2
- package/es/back-top/index.js.map +1 -1
- package/es/back-top/style.js +1 -2
- package/es/back-top/style.js.map +1 -1
- package/es/basic-config/index.js +1 -2
- package/es/basic-config/index.js.map +1 -1
- package/es/button/index.js +1 -2
- package/es/button/index.js.map +1 -1
- package/es/button/style.js +1 -2
- package/es/button/style.js.map +1 -1
- package/es/capture-screen/index.js +1 -2
- package/es/capture-screen/index.js.map +1 -1
- package/es/capture-screen/style.js +1 -2
- package/es/capture-screen/style.js.map +1 -1
- package/es/carousel/index.js +1 -2
- package/es/carousel/index.js.map +1 -1
- package/es/carousel/style.js +1 -2
- package/es/carousel/style.js.map +1 -1
- package/es/checkbox/index.js +1 -2
- package/es/checkbox/index.js.map +1 -1
- package/es/checkbox/style.js +1 -2
- package/es/checkbox/style.js.map +1 -1
- package/es/code/index.d.ts +6 -2
- package/es/code/index.js +1 -2
- package/es/code/index.js.map +1 -1
- package/es/code/style.js +25 -26
- package/es/code/style.js.map +1 -1
- package/es/code/worker.js +1 -2
- package/es/code/worker.js.map +1 -1
- package/es/color-palette/index.js +1 -2
- package/es/color-palette/index.js.map +1 -1
- package/es/color-palette/style.js +1 -2
- package/es/color-palette/style.js.map +1 -1
- package/es/color-picker/index.js +1 -2
- package/es/color-picker/index.js.map +1 -1
- package/es/color-picker/style.js +1 -2
- package/es/color-picker/style.js.map +1 -1
- package/es/cron/begin-interval.js +1 -2
- package/es/cron/begin-interval.js.map +1 -1
- package/es/cron/day.js +1 -2
- package/es/cron/day.js.map +1 -1
- package/es/cron/hour.js +1 -2
- package/es/cron/hour.js.map +1 -1
- package/es/cron/index.js +1 -2
- package/es/cron/index.js.map +1 -1
- package/es/cron/item.js +1 -2
- package/es/cron/item.js.map +1 -1
- package/es/cron/minute.js +1 -2
- package/es/cron/minute.js.map +1 -1
- package/es/cron/month.js +1 -2
- package/es/cron/month.js.map +1 -1
- package/es/cron/period.js +1 -2
- package/es/cron/period.js.map +1 -1
- package/es/cron/second.js +1 -2
- package/es/cron/second.js.map +1 -1
- package/es/cron/some.js +1 -2
- package/es/cron/some.js.map +1 -1
- package/es/cron/style.js +1 -2
- package/es/cron/style.js.map +1 -1
- package/es/cron/week.js +1 -2
- package/es/cron/week.js.map +1 -1
- package/es/cron/year.js +1 -2
- package/es/cron/year.js.map +1 -1
- package/es/date-picker/date.js +1 -2
- package/es/date-picker/date.js.map +1 -1
- package/es/date-picker/dayjs.js +1 -2
- package/es/date-picker/dayjs.js.map +1 -1
- package/es/date-picker/index.js +1 -2
- package/es/date-picker/index.js.map +1 -1
- package/es/date-picker/month.js +1 -2
- package/es/date-picker/month.js.map +1 -1
- package/es/date-picker/panel.js +1 -2
- package/es/date-picker/panel.js.map +1 -1
- package/es/date-picker/style.js +1 -2
- package/es/date-picker/style.js.map +1 -1
- package/es/date-picker/time.js +1 -2
- package/es/date-picker/time.js.map +1 -1
- package/es/date-picker/year.js +1 -2
- package/es/date-picker/year.js.map +1 -1
- package/es/dropdown/index.js +1 -2
- package/es/dropdown/index.js.map +1 -1
- package/es/empty/index.js +1 -2
- package/es/empty/index.js.map +1 -1
- package/es/from-schema/index.js +1 -2
- package/es/from-schema/index.js.map +1 -1
- package/es/get-options/index.js +1 -2
- package/es/get-options/index.js.map +1 -1
- package/es/highlight-text/index.js +1 -2
- package/es/highlight-text/index.js.map +1 -1
- package/es/img/index.js +1 -2
- package/es/img/index.js.map +1 -1
- package/es/img/lazy.js +1 -2
- package/es/img/lazy.js.map +1 -1
- package/es/img/style.js +1 -2
- package/es/img/style.js.map +1 -1
- package/es/index.js +1 -2
- package/es/index.js.map +1 -1
- package/es/input/index.js +1 -2
- package/es/input/index.js.map +1 -1
- package/es/input/style.js +1 -2
- package/es/input/style.js.map +1 -1
- package/es/input-number/index.js +1 -2
- package/es/input-number/index.js.map +1 -1
- package/es/katex/index.js +1 -2
- package/es/katex/index.js.map +1 -1
- package/es/md/common.d.ts +4 -0
- package/es/md/common.js +1 -0
- package/es/md/common.js.map +1 -0
- package/es/md/index.d.ts +1 -0
- package/es/md/index.js +1 -2
- package/es/md/index.js.map +1 -1
- package/es/md/worker.d.ts +9 -1
- package/es/md/worker.js +1 -2
- package/es/md/worker.js.map +1 -1
- package/es/md-style/index.js +1 -2
- package/es/md-style/index.js.map +1 -1
- package/es/menu/index.js +1 -2
- package/es/menu/index.js.map +1 -1
- package/es/menu/style.js +1 -2
- package/es/menu/style.js.map +1 -1
- package/es/modal/hooks.js +1 -2
- package/es/modal/hooks.js.map +1 -1
- package/es/modal/index.js +1 -2
- package/es/modal/index.js.map +1 -1
- package/es/modal/store.js +1 -2
- package/es/modal/store.js.map +1 -1
- package/es/modal/style.js +1 -2
- package/es/modal/style.js.map +1 -1
- package/es/notification/index.js +1 -2
- package/es/notification/index.js.map +1 -1
- package/es/notification/notification.js +1 -2
- package/es/notification/notification.js.map +1 -1
- package/es/notification/queque.js +1 -2
- package/es/notification/queque.js.map +1 -1
- package/es/notification/styles.js +1 -2
- package/es/notification/styles.js.map +1 -1
- package/es/pagination/index.js +1 -2
- package/es/pagination/index.js.map +1 -1
- package/es/pagination/styles.js +1 -2
- package/es/pagination/styles.js.map +1 -1
- package/es/popover/index.js +1 -2
- package/es/popover/index.js.map +1 -1
- package/es/popover/style.js +1 -2
- package/es/popover/style.js.map +1 -1
- package/es/prism/index.d.ts +0 -1
- package/es/prism/index.js +1 -2
- package/es/prism/index.js.map +1 -1
- package/es/provider/index.js +1 -2
- package/es/provider/index.js.map +1 -1
- package/es/qrcode/index.js +1 -2
- package/es/qrcode/index.js.map +1 -1
- package/es/qrcode/qrcode.js +1 -2
- package/es/qrcode/qrcode.js.map +1 -1
- package/es/radio/index.js +1 -2
- package/es/radio/index.js.map +1 -1
- package/es/radio/style.js +1 -2
- package/es/radio/style.js.map +1 -1
- package/es/segmented/index.js +1 -12
- package/es/segmented/index.js.map +1 -1
- package/es/segmented/style.js +1 -2
- package/es/segmented/style.js.map +1 -1
- package/es/select/index.js +1 -2
- package/es/select/index.js.map +1 -1
- package/es/select/style.js +1 -2
- package/es/select/style.js.map +1 -1
- package/es/skeleton/index.js +2 -25
- package/es/skeleton/index.js.map +1 -1
- package/es/spin/index.js +1 -2
- package/es/spin/index.js.map +1 -1
- package/es/switch/index.js +1 -2
- package/es/switch/index.js.map +1 -1
- package/es/switch/style.js +1 -2
- package/es/switch/style.js.map +1 -1
- package/es/table/index.js +1 -2
- package/es/table/index.js.map +1 -1
- package/es/table/styles.js +1 -2
- package/es/table/styles.js.map +1 -1
- package/es/tabs/index.js +1 -12
- package/es/tabs/index.js.map +1 -1
- package/es/tabs/style.d.ts +2 -2
- package/es/tabs/style.js +32 -33
- package/es/tabs/style.js.map +1 -1
- package/es/tag/index.js +1 -2
- package/es/tag/index.js.map +1 -1
- package/es/tag/style.js +1 -2
- package/es/tag/style.js.map +1 -1
- package/es/theme/index.js +1 -2
- package/es/theme/index.js.map +1 -1
- package/es/tree/index.js +1 -2
- package/es/tree/index.js.map +1 -1
- package/es/tree/register.js +1 -2
- package/es/tree/register.js.map +1 -1
- package/es/tree/style.js +1 -2
- package/es/tree/style.js.map +1 -1
- package/es/tree/type.js +1 -2
- package/es/tree/type.js.map +1 -1
- package/es/typography/index.js +1 -2
- package/es/typography/index.js.map +1 -1
- package/lib/avatar/favicon.svg +0 -0
- package/lib/avatar/group.js +18 -19
- package/lib/avatar/group.js.map +1 -1
- package/lib/avatar/index.js +3 -4
- package/lib/avatar/index.js.map +1 -1
- package/lib/avatar/style.js +3 -4
- package/lib/avatar/style.js.map +1 -1
- package/lib/back-top/index.js +1 -2
- package/lib/back-top/index.js.map +1 -1
- package/lib/back-top/style.js +1 -2
- package/lib/back-top/style.js.map +1 -1
- package/lib/basic-config/index.js +1 -2
- package/lib/basic-config/index.js.map +1 -1
- package/lib/button/index.js +1 -2
- package/lib/button/index.js.map +1 -1
- package/lib/button/style.js +1 -2
- package/lib/button/style.js.map +1 -1
- package/lib/capture-screen/index.js +1 -2
- package/lib/capture-screen/index.js.map +1 -1
- package/lib/capture-screen/style.js +1 -2
- package/lib/capture-screen/style.js.map +1 -1
- package/lib/carousel/index.js +1 -2
- package/lib/carousel/index.js.map +1 -1
- package/lib/carousel/style.js +1 -2
- package/lib/carousel/style.js.map +1 -1
- package/lib/checkbox/index.js +1 -2
- package/lib/checkbox/index.js.map +1 -1
- package/lib/checkbox/style.js +1 -2
- package/lib/checkbox/style.js.map +1 -1
- package/lib/code/index.d.ts +6 -2
- package/lib/code/index.js +1 -2
- package/lib/code/index.js.map +1 -1
- package/lib/code/style.js +26 -27
- package/lib/code/style.js.map +1 -1
- package/lib/code/worker.js +2 -3
- package/lib/code/worker.js.map +1 -1
- package/lib/color-palette/index.js +1 -2
- package/lib/color-palette/index.js.map +1 -1
- package/lib/color-palette/style.js +3 -4
- package/lib/color-palette/style.js.map +1 -1
- package/lib/color-picker/index.js +1 -2
- package/lib/color-picker/index.js.map +1 -1
- package/lib/color-picker/style.js +1 -2
- package/lib/color-picker/style.js.map +1 -1
- package/lib/cron/begin-interval.js +1 -2
- package/lib/cron/begin-interval.js.map +1 -1
- package/lib/cron/day.js +1 -2
- package/lib/cron/day.js.map +1 -1
- package/lib/cron/hour.js +1 -2
- package/lib/cron/hour.js.map +1 -1
- package/lib/cron/index.js +1 -2
- package/lib/cron/index.js.map +1 -1
- package/lib/cron/item.js +1 -2
- package/lib/cron/item.js.map +1 -1
- package/lib/cron/minute.js +1 -2
- package/lib/cron/minute.js.map +1 -1
- package/lib/cron/month.js +1 -2
- package/lib/cron/month.js.map +1 -1
- package/lib/cron/period.js +1 -2
- package/lib/cron/period.js.map +1 -1
- package/lib/cron/second.js +1 -2
- package/lib/cron/second.js.map +1 -1
- package/lib/cron/some.js +1 -2
- package/lib/cron/some.js.map +1 -1
- package/lib/cron/style.js +4 -5
- package/lib/cron/style.js.map +1 -1
- package/lib/cron/week.js +1 -2
- package/lib/cron/week.js.map +1 -1
- package/lib/cron/year.js +1 -2
- package/lib/cron/year.js.map +1 -1
- package/lib/date-picker/date.js +1 -2
- package/lib/date-picker/date.js.map +1 -1
- package/lib/date-picker/dayjs.js +1 -2
- package/lib/date-picker/dayjs.js.map +1 -1
- package/lib/date-picker/index.js +1 -2
- package/lib/date-picker/index.js.map +1 -1
- package/lib/date-picker/month.js +1 -2
- package/lib/date-picker/month.js.map +1 -1
- package/lib/date-picker/panel.js +1 -2
- package/lib/date-picker/panel.js.map +1 -1
- package/lib/date-picker/style.js +1 -2
- package/lib/date-picker/style.js.map +1 -1
- package/lib/date-picker/time.js +1 -2
- package/lib/date-picker/time.js.map +1 -1
- package/lib/date-picker/year.js +1 -2
- package/lib/date-picker/year.js.map +1 -1
- package/lib/dropdown/index.js +1 -2
- package/lib/dropdown/index.js.map +1 -1
- package/lib/empty/index.js +1 -2
- package/lib/empty/index.js.map +1 -1
- package/lib/from-schema/index.js +1 -2
- package/lib/from-schema/index.js.map +1 -1
- package/lib/get-options/index.js +1 -2
- package/lib/get-options/index.js.map +1 -1
- package/lib/highlight-text/index.js +2 -3
- package/lib/highlight-text/index.js.map +1 -1
- package/lib/img/index.js +1 -2
- package/lib/img/index.js.map +1 -1
- package/lib/img/lazy.js +1 -2
- package/lib/img/lazy.js.map +1 -1
- package/lib/img/style.js +3 -4
- package/lib/img/style.js.map +1 -1
- package/lib/index.js +1 -2
- package/lib/index.js.map +1 -1
- package/lib/input/index.js +1 -2
- package/lib/input/index.js.map +1 -1
- package/lib/input/style.js +1 -2
- package/lib/input/style.js.map +1 -1
- package/lib/input-number/index.js +2 -3
- package/lib/input-number/index.js.map +1 -1
- package/lib/katex/index.js +1 -2
- package/lib/katex/index.js.map +1 -1
- package/lib/md/common.d.ts +4 -0
- package/lib/md/common.js +1 -0
- package/lib/md/common.js.map +1 -0
- package/lib/md/index.d.ts +1 -0
- package/lib/md/index.js +1 -2
- package/lib/md/index.js.map +1 -1
- package/lib/md/worker.d.ts +9 -1
- package/lib/md/worker.js +1 -2
- package/lib/md/worker.js.map +1 -1
- package/lib/md-style/index.js +2 -3
- package/lib/md-style/index.js.map +1 -1
- package/lib/menu/index.js +1 -2
- package/lib/menu/index.js.map +1 -1
- package/lib/menu/style.js +1 -2
- package/lib/menu/style.js.map +1 -1
- package/lib/modal/hooks.js +1 -2
- package/lib/modal/hooks.js.map +1 -1
- package/lib/modal/index.js +1 -2
- package/lib/modal/index.js.map +1 -1
- package/lib/modal/store.js +1 -2
- package/lib/modal/store.js.map +1 -1
- package/lib/modal/style.js +1 -2
- package/lib/modal/style.js.map +1 -1
- package/lib/notification/index.js +1 -2
- package/lib/notification/index.js.map +1 -1
- package/lib/notification/notification.js +1 -2
- package/lib/notification/notification.js.map +1 -1
- package/lib/notification/queque.js +1 -2
- package/lib/notification/queque.js.map +1 -1
- package/lib/notification/styles.js +1 -2
- package/lib/notification/styles.js.map +1 -1
- package/lib/pagination/index.js +1 -2
- package/lib/pagination/index.js.map +1 -1
- package/lib/pagination/styles.js +1 -2
- package/lib/pagination/styles.js.map +1 -1
- package/lib/popover/index.js +1 -2
- package/lib/popover/index.js.map +1 -1
- package/lib/popover/style.js +3 -4
- package/lib/popover/style.js.map +1 -1
- package/lib/prism/index.d.ts +0 -1
- package/lib/prism/index.js +1 -2
- package/lib/prism/index.js.map +1 -1
- package/lib/provider/index.js +1 -2
- package/lib/provider/index.js.map +1 -1
- package/lib/qrcode/index.js +1 -2
- package/lib/qrcode/index.js.map +1 -1
- package/lib/qrcode/qrcode.js +1 -2
- package/lib/qrcode/qrcode.js.map +1 -1
- package/lib/radio/index.js +1 -2
- package/lib/radio/index.js.map +1 -1
- package/lib/radio/style.js +1 -2
- package/lib/radio/style.js.map +1 -1
- package/lib/segmented/index.js +1 -12
- package/lib/segmented/index.js.map +1 -1
- package/lib/segmented/style.js +1 -2
- package/lib/segmented/style.js.map +1 -1
- package/lib/select/index.js +1 -2
- package/lib/select/index.js.map +1 -1
- package/lib/select/style.js +1 -2
- package/lib/select/style.js.map +1 -1
- package/lib/skeleton/index.js +2 -25
- package/lib/skeleton/index.js.map +1 -1
- package/lib/spin/index.js +2 -3
- package/lib/spin/index.js.map +1 -1
- package/lib/switch/index.js +1 -2
- package/lib/switch/index.js.map +1 -1
- package/lib/switch/style.js +1 -2
- package/lib/switch/style.js.map +1 -1
- package/lib/table/index.js +1 -2
- package/lib/table/index.js.map +1 -1
- package/lib/table/styles.js +1 -2
- package/lib/table/styles.js.map +1 -1
- package/lib/tabs/index.js +1 -12
- package/lib/tabs/index.js.map +1 -1
- package/lib/tabs/style.d.ts +2 -2
- package/lib/tabs/style.js +32 -33
- package/lib/tabs/style.js.map +1 -1
- package/lib/tag/index.js +3 -4
- package/lib/tag/index.js.map +1 -1
- package/lib/tag/style.js +1 -2
- package/lib/tag/style.js.map +1 -1
- package/lib/theme/index.js +1 -2
- package/lib/theme/index.js.map +1 -1
- package/lib/tree/index.js +1 -2
- package/lib/tree/index.js.map +1 -1
- package/lib/tree/register.js +1 -2
- package/lib/tree/register.js.map +1 -1
- package/lib/tree/style.js +1 -2
- package/lib/tree/style.js.map +1 -1
- package/lib/tree/type.js +1 -2
- package/lib/tree/type.js.map +1 -1
- package/lib/typography/index.js +7 -8
- package/lib/typography/index.js.map +1 -1
- package/package.json +8 -8
- package/umd/index.js +4187 -1
- package/umd/js/074a85150a9f6a97.js +1 -0
- package/es/cron/api.md +0 -27
- package/lib/cron/api.md +0 -27
package/lib/popover/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var e,t
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";var e,t;function n(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}Object.defineProperty(exports,"__esModule",{value:!0}),n(exports,{Placement:function(){return t},TriggerOption:function(){return e},default:function(){return P},defaultProps:function(){return x}});const o=require("solid-js/web"),r=require("solid-js"),i=m(require("@moneko/common/lib/isElementInside")),c=m(require("@moneko/common/lib/isEqual")),l=m(require("@moneko/common/lib/isFunction")),a=m(require("@moneko/common/lib/passiveSupported")),u=require("@moneko/css"),s=require("solid-element"),p=require("../basic-config"),d=m(require("../empty")),f=v(require("../theme")),g=require("./style");function m(e){return e&&e.__esModule?e:{default:e}}function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function v(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=r?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o}const w=(0,o.template)("<style>"),C=(0,o.template)("<style> "),b=(0,o.template)("<span>"),M=(0,o.template)("<div>");function y(e){let t,n,s,p;let{isDark:m,baseStyle:h}=f.default,v=(0,r.mergeProps)({trigger:"hover"},e),[y]=(0,r.splitProps)(v,["class","css","popupClass","popupCss","size","trigger","open","disabled","onOpenChange","dropdownMatchSelectWidth","destroyInactive","arrow","placement","getPopupContainer","children","content"]),[x,P]=(0,r.createSignal)(null),[O,k]=(0,r.createSignal)({}),[E,S]=(0,r.createSignal)(!1),[j,q]=(0,r.createSignal)("");function L(e){y.disabled||(y.onOpenChange&&y.onOpenChange(e),void 0===y.open&&P(e))}function T(){!1===x()&&(P(null),L(null))}function _(e){clearTimeout(s),s=setTimeout(()=>{if(clearTimeout(s),e.target&&"false"===e.target.getAttribute("handle-closed"))return;let n=(0,i.default)(e.target,t);(x()&&!n||n&&"mousedown"!==e.type)&&L(!1)},"hover"===y.trigger?300:0)}(0,r.createEffect)(()=>{void 0!==y.open&&P(y.open)}),(0,r.createEffect)(()=>{x()&&y.dropdownMatchSelectWidth&&n&&q(`.portal {width: ${n.offsetWidth}px;}`)});let R=function(e){clearTimeout(p),p=setTimeout(()=>{if(clearTimeout(p),!t||!n||!e&&"contextMenu"===y.trigger)return;if(e?.type==="scroll"&&"contextMenu"===y.trigger){L(!1);return}let o=n.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.width/2-o.width/2,l=window.innerHeight-o.bottom,a=y.placement,u=!a?.startsWith("top")&&l>.8*t.offsetHeight&&l>o.top||a?.startsWith("bottom"),s=y.arrow?8:4,d={};switch(y.placement){case"bottomLeft":case"left":case"topLeft":d.left=o.left,d["--x"]=-r.width/2+16;break;case"bottomRight":case"right":case"topRight":d.left=o.right-r.width,d["--x"]=r.width/2-16;break;default:d.left=Math.abs(i>o.left?o.left:o.left-i),d["--x"]=-(d.left-o.left+i)}u?d.top=o.bottom+s:d.bottom=window.innerHeight-o.top+s,k(e=>(0,c.default)(e,d)?e:d),S(e=>!u===e?e:!u)},32)};function W(e){clearTimeout(s),e.stopPropagation(),"contextMenu"===y.trigger&&"contextmenu"===e.type&&(e.preventDefault(),k(n=>({...n,left:e.clientX,top:e.clientY,"--x":-(t?.getBoundingClientRect().width||0)/2+16}))),L(!0)}let $=(0,r.createMemo)(()=>(0,l.default)(y.getPopupContainer)?y.getPopupContainer(n):document.body),z=(0,r.createMemo)(()=>{let e={},t={click:"onMouseDown",hover:"onMouseEnter",contextMenu:"onContextMenu",none:void 0}[y.trigger],n={hover:"onMouseLeave",click:void 0,contextMenu:void 0,none:void 0}[y.trigger];return Object.assign(e,t&&{[t]:W},n&&{[n]:_}),e}),D=(0,r.createMemo)(()=>{let e=O();return`.portal {${Object.keys(e).map(t=>`${t}:${e[t]}px;`).join("")}z-index: 1;}`}),H=(0,r.createMemo)(()=>(0,u.cx)("portal",y.arrow&&"arrow",`${x()?"in":"out"}-${E()?"up":"down"}`,y.size,y.popupClass)),I=(0,r.createMemo)(()=>`:host {--popover-bg: ${m()?"#1f1f1f":"var(--component-bg)"};--popover-shadow-color: rgb(0 0 0 / 5%);}`);return(0,r.createEffect)(()=>{x()&&(R(),window.addEventListener("scroll",R,{passive:a.default})),(0,r.onCleanup)(()=>{window.removeEventListener("scroll",R,!1)})}),(0,r.onMount)(()=>{"none"!==y.trigger&&document.documentElement.addEventListener("mousedown",_,!1)}),(0,r.onCleanup)(()=>{clearTimeout(s),document.documentElement.removeEventListener("mousedown",_,!1)}),[(()=>{let e=w();return e.textContent=g.popoverCss,e})(),(0,o.createComponent)(r.Show,{get when(){return y.css},get children(){let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=(0,u.css)(y.css)),e}}),(()=>{let e=b(),t=n;return"function"==typeof t?(0,o.use)(t,e):n=e,(0,o.spread)(e,(0,o.mergeProps)({get class(){return(0,u.cx)("popover",y.size,y.class)}},z),!1,!0),(0,o.insert)(e,()=>y.children),e})(),(0,o.createComponent)(r.Show,{get when(){return null!==x()||!y.destroyInactive},get children(){return(0,o.createComponent)(o.Portal,{useShadow:!0,get mount(){return $()},get children(){return[(()=>{let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=h()),e})(),(()=>{let e=w();return e.textContent=g.portalCss,e})(),(()=>{let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=I()),e})(),(()=>{let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=D()),e})(),(()=>{let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=j()),e})(),(0,o.createComponent)(r.Show,{get when(){return y.popupCss},get children(){let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=(0,u.css)(y.popupCss)),e}}),(()=>{let e=M(),n=t;return(0,o.addEventListener)(e,"animationend",T),"function"==typeof n?(0,o.use)(n,e):t=e,(0,o.spread)(e,(0,o.mergeProps)({get class(){return H()}},z),!1,!0),(0,o.insert)(e,(0,o.createComponent)(r.Show,{get when(){return y.content},get fallback(){return(0,o.createComponent)(d.default,{})},get children(){return(0,o.createComponent)(r.Show,{get when(){return"string"==typeof y.content},get fallback(){return y.content},get children(){let e=M();return(0,o.effect)(()=>e.innerHTML=y.content),e}})}})),e})()]}})}})]}!function(e){e.hover="hover",e.click="click",e.contextMenu="contextMenu",e.none="none"}(e||(e={})),function(e){e.bottomLeft="bottomLeft",e.bottom="bottom",e.bottomRight="bottomRight",e.topLeft="topLeft",e.top="top",e.topRight="topRight",e.left="left",e.right="right"}(t||(t={}));const x={class:void 0,css:void 0,content:void 0,getPopupContainer:void 0,trigger:void 0,open:void 0,onOpenChange:void 0,popupClass:void 0,popupCss:void 0,destroyInactive:!0,disabled:void 0,arrow:void 0,placement:void 0,dropdownMatchSelectWidth:void 0};(0,s.customElement)("n-popover",x,(e,t)=>{let{baseStyle:n}=f.default,i=t.element,c=(0,r.mergeProps)({onOpenChange(e){i.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...i.childNodes.values()]},e);return(0,r.createEffect)(()=>{(0,p.clearAttribute)(i,["content","popupCss","css"])}),[(()=>{let e=w();return e.textContent=f.inline,e})(),(()=>{let e=C(),t=e.firstChild;return(0,o.effect)(()=>t.data=n()),e})(),(0,o.createComponent)(y,c)]});const P=y;
|
package/lib/popover/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/popover/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n splitProps,\n} from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BasicConfig, CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport theme, { inline } from '../theme';\n\nimport { popoverCss, portalCss } from './style';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ninterface Posi {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n}\n\ninterface EventMap {\n click?: string;\n hover?: string;\n contextMenu?: string;\n none?: never;\n [key: string]: string | undefined;\n}\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if (e.target && (e.target as HTMLElement).getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef.getBoundingClientRect();\n const portalRect = ref.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: void 0,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: void 0,\n contextMenu: void 0,\n none: void 0,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style textContent={popoverCss} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style textContent={baseStyle()} />\n <style textContent={portalCss} />\n <style textContent={hostStyle()} />\n <style textContent={portalStyle()} />\n <style textContent={width()} />\n <Show when={local.popupCss}>\n <style textContent={css(local.popupCss)} />\n </Show>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<Empty />}>\n <Show when={typeof local.content === 'string'} fallback={local.content}>\n {/* eslint-disable-next-line solid/no-innerhtml */}\n <div innerHTML={local.content} />\n </Show>\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const { baseStyle } = theme;\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['content', 'popupCss', 'css']);\n });\n return (\n <>\n <style textContent={inline} />\n <style textContent={baseStyle()} />\n <Popover {...props} />\n </>\n );\n});\nexport default Popover;\n"],"names":["TriggerOption","Placement","defaultProps","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","theme","mp","mergeProps","trigger","local","splitProps","open","setOpen","createSignal","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","isElementInside","type","createEffect","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","isEqual","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","createMemo","isFunction","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","cx","size","popupClass","hostStyle","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","documentElement","popoverCss","Show","css","class","children","destroyInactive","Portal","portalCss","popupCss","content","Empty","customElement","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","clearAttribute","inline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["components/popover/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n splitProps,\n} from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BasicConfig, CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport theme, { inline } from '../theme';\n\nimport { popoverCss, portalCss } from './style';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ninterface Posi {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n}\n\ninterface EventMap {\n click?: string;\n hover?: string;\n contextMenu?: string;\n none?: never;\n [key: string]: string | undefined;\n}\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if (e.target && (e.target as HTMLElement).getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef.getBoundingClientRect();\n const portalRect = ref.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: void 0,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: void 0,\n contextMenu: void 0,\n none: void 0,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style textContent={popoverCss} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style textContent={baseStyle()} />\n <style textContent={portalCss} />\n <style textContent={hostStyle()} />\n <style textContent={portalStyle()} />\n <style textContent={width()} />\n <Show when={local.popupCss}>\n <style textContent={css(local.popupCss)} />\n </Show>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<Empty />}>\n <Show when={typeof local.content === 'string'} fallback={local.content}>\n {/* eslint-disable-next-line solid/no-innerhtml */}\n <div innerHTML={local.content} />\n </Show>\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const { baseStyle } = theme;\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['content', 'popupCss', 'css']);\n });\n return (\n <>\n <style textContent={inline} />\n <style textContent={baseStyle()} />\n <Popover {...props} />\n </>\n );\n});\nexport default Popover;\n"],"names":["defaultProps","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","theme","mp","mergeProps","trigger","local","splitProps","open","setOpen","createSignal","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","isElementInside","type","createEffect","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","isEqual","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","createMemo","isFunction","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","cx","size","popupClass","hostStyle","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","documentElement","popoverCss","Show","css","class","children","destroyInactive","Portal","portalCss","popupCss","content","Empty","TriggerOption","Placement","customElement","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","clearAttribute","inline"],"mappings":"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"}
|
package/lib/popover/style.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";function o(o,r){for(var e in r)Object.defineProperty(o,e,{enumerable:!0,get:r[e]})}Object.defineProperty(exports,"__esModule",{value:!0}),o(exports,{popoverCss:function(){return e},portalCss:function(){return n}});const r=require("@moneko/css"),e=(0,r.css)`
|
|
2
2
|
.popover {
|
|
3
3
|
position: relative;
|
|
4
4
|
display: inline-block;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
inline-size: 1px;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
`,
|
|
11
|
+
`,n=(0,r.css)`
|
|
12
12
|
.container {
|
|
13
13
|
overflow-y: auto;
|
|
14
14
|
/* stylelint-disable-next-line */
|
|
@@ -152,5 +152,4 @@
|
|
|
152
152
|
pointer-events: none;
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
`;
|
|
156
|
-
//# sourceMappingURL=style.js.map
|
|
155
|
+
`;
|
package/lib/popover/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/popover/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const popoverCss = css`\n .popover {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n\n &::-webkit-scrollbar {\n inline-size: 1px;\n }\n }\n`;\nexport const portalCss = css`\n .container {\n overflow-y: auto;\n /* stylelint-disable-next-line */\n max-block-size: -webkit-fill-available;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .portal {\n --direction: 1;\n\n position: fixed;\n display: inline-block;\n border-radius: var(--border-radius);\n padding: 4px;\n font-size: var(--font-size);\n white-space: break-spaces;\n color: var(--text-color);\n background-color: var(--popover-bg);\n filter: drop-shadow(0.5px calc(var(--direction) * 1px) 4px var(--popover-shadow-color))\n drop-shadow(1px calc(var(--direction) * 2px) 8px var(--popover-shadow-color))\n drop-shadow(2px calc(var(--direction) * 4px) 16px var(--popover-shadow-color));\n min-inline-size: 100px;\n backdrop-filter: blur(10px);\n box-sizing: border-box;\n }\n\n .arrow {\n &::before {\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n margin: auto;\n inline-size: 12px;\n block-size: 8px;\n background: inherit;\n content: '';\n clip-path: polygon(0% 0%, 50% 100%, 100% 0%);\n transform: translate3d(var(--x, 0), 100%, 0);\n }\n }\n\n .in-up {\n --direction: -1;\n\n animation: popover-up-in-effect var(--transition-duration) forwards;\n transform: scaleY(1);\n }\n\n .out-up {\n --direction: -1;\n\n animation: popover-up-out-effect var(--transition-duration) forwards;\n transform: scaleY(1);\n }\n\n .in-down {\n --direction: 1;\n\n animation: popover-down-in-effect var(--transition-duration) forwards;\n transform: scaleY(1);\n\n &::before {\n inset-block-end: unset;\n inset-block-start: 0;\n transform: translate3d(var(--x, 0), -100%, 0) rotate(180deg);\n }\n }\n\n .out-down {\n --direction: 1;\n\n animation: popover-down-out-effect var(--transition-duration) forwards;\n transform: scaleY(1);\n\n &::before {\n inset-block-end: unset;\n inset-block-start: 0;\n transform: translate3d(var(--x, 0), -100%, 0) rotate(180deg);\n }\n }\n\n @keyframes popover-down-in-effect {\n 0% {\n transform: scaleY(0.8);\n transform-origin: 0% 0%;\n opacity: 0;\n }\n\n 100% {\n transform: scaleY(1);\n transform-origin: 0% 0%;\n opacity: 1;\n }\n }\n\n @keyframes popover-down-out-effect {\n 0% {\n transform: scaleY(1);\n transform-origin: 0% 0%;\n opacity: 1;\n pointer-events: none;\n }\n\n 100% {\n transform: scaleY(0.8);\n transform-origin: 0% 0%;\n opacity: 0;\n pointer-events: none;\n }\n }\n\n @keyframes popover-up-in-effect {\n 0% {\n transform: scaleY(0.8);\n transform-origin: 100% 100%;\n opacity: 0;\n }\n\n 100% {\n transform: scaleY(1);\n transform-origin: 100% 100%;\n opacity: 1;\n }\n }\n\n @keyframes popover-up-out-effect {\n 0% {\n transform: scaleY(1);\n transform-origin: 100% 100%;\n opacity: 1;\n pointer-events: none;\n }\n\n 100% {\n transform: scaleY(0.8);\n transform-origin: 100% 100%;\n opacity: 0;\n pointer-events: none;\n }\n }\n`;\n"],"names":["popoverCss","portalCss","css"],"mappings":"kKAEaA,UAAU,mBAAVA,GAWAC,SAAS,mBAATA,qBAbO,eAEPD,EAAaE,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;AAU9B,CAAC,CACYD,EAAYC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgJ7B,CAAC"}
|
package/lib/prism/index.d.ts
CHANGED
|
@@ -18,5 +18,4 @@ import 'prismjs/components/prism-toml.js';
|
|
|
18
18
|
import 'prismjs/components/prism-typescript.js';
|
|
19
19
|
import 'prismjs/components/prism-yaml.js';
|
|
20
20
|
import 'prismjs/components/prism-matlab.js';
|
|
21
|
-
import 'prismjs/plugins/highlight-keywords/prism-highlight-keywords.js';
|
|
22
21
|
export default Prism;
|
package/lib/prism/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return e}});const s=r(require("prismjs"));function r(s){return s&&s.__esModule?s:{default:s}}require("prismjs/components/prism-bash.js"),require("prismjs/components/prism-clike.js"),require("prismjs/components/prism-css.js"),require("prismjs/components/prism-docker.js"),require("prismjs/components/prism-git.js"),require("prismjs/components/prism-javascript.js"),require("prismjs/components/prism-json.js"),require("prismjs/components/prism-jsx.js"),require("prismjs/components/prism-tsx.js"),require("prismjs/components/prism-less.js"),require("prismjs/components/prism-markup.js"),require("prismjs/components/prism-regex.js"),require("prismjs/components/prism-rust.js"),require("prismjs/components/prism-sql.js"),require("prismjs/components/prism-swift.js"),require("prismjs/components/prism-toml.js"),require("prismjs/components/prism-typescript.js"),require("prismjs/components/prism-yaml.js"),require("prismjs/components/prism-matlab.js");const e=s.default;
|
package/lib/prism/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/prism/index.ts"],"sourcesContent":["import Prism from 'prismjs';\n\n// language\nimport 'prismjs/components/prism-bash.js'; // shell + sh + bash\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-css.js';\nimport 'prismjs/components/prism-docker.js'; // docker + dockerfile\nimport 'prismjs/components/prism-git.js'; // diff\nimport 'prismjs/components/prism-javascript.js'; // javascript + js\nimport 'prismjs/components/prism-json.js'; // json + webmanifest\nimport 'prismjs/components/prism-jsx.js';\nimport 'prismjs/components/prism-tsx.js';\nimport 'prismjs/components/prism-less.js';\nimport 'prismjs/components/prism-markup.js'; // html + mathml + svg + xml + ssml + atom + rss\nimport 'prismjs/components/prism-regex.js';\nimport 'prismjs/components/prism-rust.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-toml.js';\nimport 'prismjs/components/prism-typescript.js'; // typescript + ts\nimport 'prismjs/components/prism-yaml.js'; // yaml + yml\nimport 'prismjs/components/prism-matlab.js';\n\nexport default Prism;\n"],"names":["Prism"],"mappings":"kGAuBA,+CAAA,uBAvBkB,uEAGX,4CACA,6CACA,2CACA,8CACA,2CACA,kDACA,4CACA,2CACA,2CACA,4CACA,8CACA,6CACA,4CACA,2CACA,6CACA,4CACA,kDACA,4CACA,4CAEP,EAAeA,SAAK"}
|
package/lib/provider/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return u}});const e=require("solid-js/web"),t=require("solid-js"),r=require("solid-element"),n=o(require("../theme"));function o(e){return e&&e.__esModule?e:{default:e}}const c=(0,e.template)("<style> ");function s(o){let{baseStyle:s,scheme:u,setScheme:l}=n.default;return(0,r.noShadowDOM)(),(0,t.createEffect)(()=>{o.onScheme?.(u())}),(0,t.createEffect)(()=>{o.scheme&&l(o.scheme)}),[(()=>{let t=c(),r=t.firstChild;return(0,e.effect)(()=>r.data=s()),t})(),(0,e.memo)(()=>o.children)]}(0,r.customElement)("n-provider",(r,n)=>{let o=n.element,c=(0,t.mergeProps)({onScheme(e){o.dispatchEvent(new CustomEvent("scheme",{detail:e}))}},r);return(0,e.createComponent)(s,c)});const u=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/provider/index.tsx"],"sourcesContent":["import { createEffect, mergeProps } from 'solid-js';\nimport { customElement, noShadowDOM } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme, { ColorScheme } from '../theme';\n\nfunction Provider(props: ProviderProps) {\n const { baseStyle, scheme, setScheme } = theme;\n\n noShadowDOM();\n createEffect(() => {\n props.onScheme?.(scheme());\n });\n createEffect(() => {\n if (props.scheme) {\n setScheme(props.scheme);\n }\n });\n return (\n <>\n <style textContent={baseStyle()} />\n {props.children}\n </>\n );\n}\nexport interface ProviderProps {\n /** 主题, 等同于使用 setScheme\n * @default 'auto'\n */\n scheme?: keyof typeof ColorScheme;\n /** 包裹的子项 */\n children?: JSX.Element;\n /** 响应 scheme 变化 */\n onScheme?(scheme: keyof typeof ColorScheme): void;\n}\nexport type ProviderElement = CustomElement<ProviderProps, 'onScheme'>;\n\ncustomElement<ProviderProps>('n-provider', (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onScheme(scheme: keyof typeof ColorScheme) {\n el.dispatchEvent(\n new CustomEvent('scheme', {\n detail: scheme,\n }),\n );\n },\n },\n _,\n );\n\n return <Provider {...props} />;\n});\nexport default Provider;\n"],"names":["Provider","props","baseStyle","scheme","setScheme","theme","noShadowDOM","createEffect","onScheme","children","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail"],"mappings":"kGAsDA,+CAAA,+CAtDyC,sBACE,6BAGR,mGAEnC,SAASA,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CAW9C,MATAC,GAAAA,aAAW,IACXC,GAAAA,cAAY,EAAC,KACXN,EAAMO,QAAQ,GAAGL,IACnB,GACAI,GAAAA,cAAY,EAAC,KACPN,EAAME,MAAM,EACdC,EAAUH,EAAME,MAAM,CAE1B,iEAGwBD,0BACnBD,EAAMQ,QAAQ,EAGrB,CAaAC,GAAAA,eAAa,EAAgB,aAAc,CAACC,EAAGC,KAC7C,IAAMC,EAAKD,EAAIE,OAAO,CAChBb,EAAQc,GAAAA,YAAU,EACtB,CACEP,SAASL,CAAgC,EACvCU,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQf,CACV,GAEJ,CACF,EACAQ,GAGF,4BAAQX,EAAaC,EACvB,SACA,EAAeD"}
|
package/lib/qrcode/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";function e(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}Object.defineProperty(exports,"__esModule",{value:!0}),e(exports,{default:function(){return h},defaultProps:function(){return g}});const r=require("solid-js/web"),t=require("solid-js"),o=require("solid-element"),i=require("../basic-config"),n=s(require("../theme")),l=require("./qrcode");function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(c=function(e){return e?t:r})(e)}function s(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=c(r);if(t&&t.has(e))return t.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var l=i?Object.getOwnPropertyDescriptor(e,n):null;l&&(l.get||l.set)?Object.defineProperty(o,n,l):o[n]=e[n]}return o.default=e,t&&t.set(e,o),o}const a=(0,r.template)('<svg><image preserveAspectRatio="xMidYMid meet"></svg>',!1,!0),d=(0,r.template)('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" stroke="none" shape-rendering="crispEdges" role="img"><path></path><path>'),b=(0,r.template)('<canvas role="img">'),u=(0,r.template)("<style>"),f=e=>{let o,i,c;let{isDark:s}=n.default,u=(0,t.mergeProps)({size:160,iconSize:7,border:1,ecl:"m",type:"svg"},e),[f,g]=(0,t.splitProps)(u,["value","border","size","type","minVersion","maxVersion","mask","boostEcc","ecl","bgColor","color","iconSize","shape"]),h={l:l.Ecc.get("LOW"),m:l.Ecc.get("MEDIUM"),q:l.Ecc.get("QUARTILE"),h:l.Ecc.get("HIGH")};return(0,t.createEffect)(e=>{let r;s();let t=(0,l.makeSegments)(f.value),n=(0,l.encodeSegments)(t,h[f.ecl],f.minVersion,f.maxVersion,f.mask,f.boostEcc);if("canvas"===f.type){if(f.size<=0||f.border<0||!o)throw RangeError("Value out of range");let t=f.size/(n.size+2*f.border),i=t/2;o.width=f.size,o.height=f.size,r=window.getComputedStyle(o);let l=o.getContext("2d"),s=f.color||e?.color||r.color,a=f.bgColor||e?.bg||r.backgroundColor;l.clearRect(0,0,f.size,f.size),l.fillStyle=a,l.fillRect(0,0,f.size,f.size),l.fillStyle=s;for(let e=-f.border;e<n.size+f.border;e++){let r=(e+f.border)*t;for(let o=-f.border;o<n.size+f.border;o++)if(n.getModule(o,e)){let e=(o+f.border)*t;switch(f.shape){case"circle":l.beginPath(),l.arc(e+i,r+i,i,0,2*Math.PI),l.fill();break;case"heart":l.beginPath(),l.moveTo(e+i,r+t/4),l.bezierCurveTo(e+.1*t,r-.2*t,e-.3*t,r+.6*t,e+i,r+t),l.bezierCurveTo(e+1.3*t,r+.6*t,e+.9*t,r-.2*t,e+i,r+t/4),l.closePath(),l.fill();break;case"rhombus":l.beginPath(),l.moveTo(e+i,r),l.lineTo(e+t,r+i),l.lineTo(e+i,r+t),l.lineTo(e,r+i),l.closePath(),l.fill();break;default:l.fillRect(Math.floor(e),Math.floor(r),Math.ceil(t),Math.ceil(t))}}}g.icon&&(c||(c=new Image(f.iconSize,f.iconSize)),c.src=g.icon,c.onload=()=>{let e=(f.size+f.border*t-f.iconSize)/2;l.drawImage(c,e,e,f.iconSize,f.iconSize)})}else{if(f.border<0)throw RangeError("Border must be non-negative");let t=[];for(let e=0;e<n.size;e++)for(let r=0;r<n.size;r++)if(n.getModule(r,e))switch(f.shape){case"circle":t.push(`M${r+f.border+.5},${e+f.border+.5} m -0.5, 0 a 0.5,0.5 0 1,0 1,0 a 0.5,0.5 0 1,0 -1,0`);break;case"rhombus":t.push(`M${r+f.border+.5},${e+f.border} L${r+f.border+1},${e+f.border+.5} L${r+f.border+.5},${e+f.border+1} L${r+f.border},${e+f.border+.5} Z`);break;case"heart":t.push(`M${r+f.border+.5},${e+f.border+.25} C${r+f.border+.1},${e+f.border-.2} ${r+f.border-.3},${e+f.border+.6} ${r+f.border+.5},${e+f.border+1} C${r+f.border+1.3},${e+f.border+.6} ${r+f.border+.9},${e+f.border-.2} ${r+f.border+.5},${e+f.border+.25} Z`);break;default:t.push(`M${r+f.border},${e+f.border}h1v1h-1z`)}let o=i?.querySelectorAll("path"),l=n.size+2*f.border;i?.setAttribute("viewBox",`0 0 ${l} ${l}`),r=window.getComputedStyle(i),o.length>0&&(o[0].setAttribute("d",`M0,0 h${l}v${l}H0z`),o[0].setAttribute("fill",f.bgColor||e?.bg||r.backgroundColor),o[1].setAttribute("d",t.join(" ")),o[1].setAttribute("fill",f.color||e?.color||r.color));let c=i?.querySelector("image");if(c){let e=`${(n.size+2*f.border-f.iconSize)/2}`;c.setAttribute("x",e),c.setAttribute("y",e),c.setAttribute("width",`${f.iconSize}`),c.setAttribute("height",`${f.iconSize}`)}}return{color:r.color,bg:r.backgroundColor}}),(0,r.createComponent)(t.Show,{get when(){return"svg"===f.type},get fallback(){return(()=>{let e=b(),t=o;return"function"==typeof t?(0,r.use)(t,e):o=e,e})()},get children(){let e=d(),o=i;return e.firstChild.nextSibling,"function"==typeof o?(0,r.use)(o,e):i=e,(0,r.insert)(e,(0,r.createComponent)(t.Show,{get when(){return g.icon},get children(){let e=a();return(0,r.effect)(()=>(0,r.setAttribute)(e,"href",g.icon)),e}}),null),(0,r.effect)(t=>{let o=f.size,i=f.size;return o!==t._v$&&(0,r.setAttribute)(e,"width",t._v$=o),i!==t._v$2&&(0,r.setAttribute)(e,"height",t._v$2=i),t},{_v$:void 0,_v$2:void 0}),e}})},g={value:"",icon:void 0,color:void 0,bgColor:void 0,size:void 0,iconSize:void 0,ecl:void 0,minVersion:void 0,maxVersion:void 0,mask:void 0,boostEcc:!1,border:void 0,type:void 0,shape:void 0};(0,o.customElement)("n-qrcode",g,(e,o)=>{let l=o.element;return(0,t.createEffect)(()=>{(0,i.clearAttribute)(l,["value","icon"])}),[(()=>{let e=u();return e.textContent=n.inline,e})(),(0,r.createComponent)(f,e)]});const h=f;
|
package/lib/qrcode/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/qrcode/index.tsx"],"sourcesContent":["import { createEffect, JSX, mergeProps, Show, splitProps } from 'solid-js';\nimport { customElement } from 'solid-element';\n\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nimport { Ecc, encodeSegments, type IntRange, makeSegments } from './qrcode';\nexport type { IntRange } from './qrcode';\nexport interface QrCodeProps {\n /** 自定义类名 */\n class?: string;\n style?: string | JSX.CSSProperties;\n /** 二维码值 */\n value: string;\n /** 二维码模块的颜色 */\n color?: string;\n /** 二维码背景色 */\n bgColor?: string;\n /**\n * 二维码尺寸\n * @default 150\n */\n size?: number;\n /** 纠错等级; 分别对应7%、15%、25%、30%的数据纠错能力\n * @default 'm'\n */\n ecl?: 'l' | 'm' | 'q' | 'h';\n /**\n * 支持的QR码模型2标准最小版本\n * @default 1\n */\n minVersion?: IntRange<1, 41>;\n /**\n * 支持的QR码模型2标准最大版本\n * @default 40\n */\n maxVersion?: IntRange<1, 41>;\n /**\n * 掩码模式; 为 -1 时,表示自动选择\n * @default -1\n */\n mask?: -1 | IntRange<0, 8>;\n /**\n * 在数据仍然适合当前版本号的情况下提高纠错级别\n * @default true\n */\n boostEcc?: boolean;\n /**\n * 模块外围的边框宽度(模块单位,非像素)\n * @default 1\n */\n border?: IntRange<1, 101>;\n /**\n * 渲染方式\n * @default 'svg'\n */\n type?: 'svg' | 'canvas';\n /**\n * 二维码图标\n */\n icon?: string;\n /**\n * 二维码图标尺寸\n * @default 7\n */\n iconSize?: number;\n /**\n * 模块形状\n * @default 'rect'\n * @since 2.9.1\n */\n shape?: 'rect' | 'rhombus' | 'heart' | 'circle';\n}\nconst QRCode = (_props: QrCodeProps) => {\n const { isDark } = theme;\n let cvs: HTMLCanvasElement | undefined;\n let svg: SVGSVGElement | undefined;\n let img: HTMLImageElement | undefined;\n const normal = mergeProps(\n {\n size: 160,\n iconSize: 7,\n border: 1,\n ecl: 'm' as const,\n type: 'svg' as const,\n },\n _props,\n );\n const [props, other] = splitProps(normal, [\n 'value',\n 'border',\n 'size',\n 'type',\n 'minVersion',\n 'maxVersion',\n 'mask',\n 'boostEcc',\n 'ecl',\n 'bgColor',\n 'color',\n 'iconSize',\n 'shape',\n ]);\n const eccMap = {\n l: Ecc.get('LOW'),\n m: Ecc.get('MEDIUM'),\n q: Ecc.get('QUARTILE'),\n h: Ecc.get('HIGH'),\n };\n\n createEffect((prev?: { color?: string; bg?: string }) => {\n isDark(); // 响应主题模式\n const segs = makeSegments(props.value);\n const qr = encodeSegments(\n segs,\n eccMap[props.ecl],\n props.minVersion,\n props.maxVersion,\n props.mask,\n props.boostEcc,\n );\n let styles: CSSStyleDeclaration;\n\n if (props.type === 'canvas') {\n if (props.size <= 0 || props.border < 0 || !cvs) throw new RangeError('Value out of range');\n const scale = props.size / (qr.size + props.border * 2);\n const radius = scale / 2; // 半径\n\n cvs.width = props.size;\n cvs.height = props.size;\n styles = window.getComputedStyle(cvs as unknown as Element);\n const ctx = cvs.getContext('2d') as CanvasRenderingContext2D;\n const color = props.color || prev?.color || styles.color;\n const bgColor = props.bgColor || prev?.bg || styles.backgroundColor;\n\n ctx.clearRect(0, 0, props.size, props.size);\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, props.size, props.size);\n ctx.fillStyle = color;\n for (let y = -props.border; y < qr.size + props.border; y++) {\n const ypos = (y + props.border) * scale;\n\n for (let x = -props.border; x < qr.size + props.border; x++) {\n if (qr.getModule(x, y)) {\n const xpos = (x + props.border) * scale;\n\n switch (props.shape) {\n case 'circle':\n ctx.beginPath();\n ctx.arc(xpos + radius, ypos + radius, radius, 0, Math.PI * 2);\n ctx.fill();\n break;\n case 'heart':\n ctx.beginPath();\n ctx.moveTo(xpos + radius, ypos + scale / 4);\n ctx.bezierCurveTo(\n xpos + scale * 0.1,\n ypos - scale * 0.2,\n xpos - scale * 0.3,\n ypos + scale * 0.6,\n xpos + radius,\n ypos + scale,\n );\n ctx.bezierCurveTo(\n xpos + scale * 1.3,\n ypos + scale * 0.6,\n xpos + scale * 0.9,\n ypos - scale * 0.2,\n xpos + radius,\n ypos + scale / 4,\n );\n ctx.closePath();\n ctx.fill();\n break;\n case 'rhombus':\n ctx.beginPath();\n ctx.moveTo(xpos + radius, ypos);\n ctx.lineTo(xpos + scale, ypos + radius);\n ctx.lineTo(xpos + radius, ypos + scale);\n ctx.lineTo(xpos, ypos + radius);\n ctx.closePath();\n ctx.fill();\n break;\n case 'rect':\n default:\n // 避免由于小数位带来的间隔问题\n ctx.fillRect(\n Math.floor(xpos),\n Math.floor(ypos),\n Math.ceil(scale),\n Math.ceil(scale),\n );\n break;\n }\n }\n }\n }\n // 恢复缩放\n // ctx.restore();\n // 如果有图标,则绘制到中心\n if (other.icon) {\n if (!img) {\n img = new Image(props.iconSize, props.iconSize);\n }\n img.src = other.icon;\n img.onload = () => {\n const offset = (props.size + props.border * scale - props.iconSize) / 2;\n\n ctx.drawImage(img!, offset, offset, props.iconSize, props.iconSize);\n };\n }\n } else {\n if (props.border < 0) {\n throw new RangeError('Border must be non-negative');\n }\n const parts: string[] = [];\n\n for (let y = 0; y < qr.size; y++) {\n for (let x = 0; x < qr.size; x++) {\n if (qr.getModule(x, y)) {\n switch (props.shape) {\n case 'circle':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border + 0.5} m -0.5, 0 a 0.5,0.5 0 1,0 1,0 a 0.5,0.5 0 1,0 -1,0`,\n );\n break;\n case 'rhombus':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border} L${x + props.border + 1},${y + props.border + 0.5} L${x + props.border + 0.5},${y + props.border + 1} L${x + props.border},${y + props.border + 0.5} Z`,\n );\n break;\n case 'heart':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border + 0.25} C${x + props.border + 0.1},${y + props.border - 0.2} ${x + props.border - 0.3},${y + props.border + 0.6} ${x + props.border + 0.5},${y + props.border + 1} C${x + props.border + 1.3},${y + props.border + 0.6} ${x + props.border + 0.9},${y + props.border - 0.2} ${x + props.border + 0.5},${y + props.border + 0.25} Z`,\n );\n break;\n case 'rect':\n default:\n parts.push(`M${x + props.border},${y + props.border}h1v1h-1z`);\n break;\n }\n }\n }\n }\n const paths = svg?.querySelectorAll('path') as unknown as SVGPathElement[];\n const box_size = qr.size + props.border * 2;\n\n svg?.setAttribute('viewBox', `0 0 ${box_size} ${box_size}`);\n styles = window.getComputedStyle(svg as unknown as Element);\n if (paths.length > 0) {\n paths[0].setAttribute('d', `M0,0 h${box_size}v${box_size}H0z`);\n paths[0].setAttribute('fill', props.bgColor || prev?.bg || styles.backgroundColor);\n paths[1].setAttribute('d', parts.join(' '));\n paths[1].setAttribute('fill', props.color || prev?.color || styles.color);\n }\n // icon\n const icon = svg?.querySelector('image');\n\n if (icon) {\n const offset = `${(qr.size + props.border * 2 - props.iconSize) / 2}`;\n\n icon.setAttribute('x', offset);\n icon.setAttribute('y', offset);\n icon.setAttribute('width', `${props.iconSize}`);\n icon.setAttribute('height', `${props.iconSize}`);\n }\n }\n\n return {\n color: styles.color,\n bg: styles.backgroundColor,\n };\n });\n\n return (\n <Show when={props.type === 'svg'} fallback={<canvas ref={cvs} role=\"img\" />}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n stroke=\"none\"\n width={props.size}\n height={props.size}\n ref={svg}\n shape-rendering=\"crispEdges\"\n role=\"img\"\n >\n <path />\n <path />\n <Show when={other.icon}>\n <image href={other.icon} preserveAspectRatio=\"xMidYMid meet\" />\n </Show>\n </svg>\n </Show>\n );\n};\n\nexport type QrCodeElement = CustomElement<QrCodeProps>;\nexport const defaultProps: QrCodeProps = {\n value: '',\n icon: void 0,\n color: void 0,\n bgColor: void 0,\n size: void 0,\n iconSize: void 0,\n ecl: void 0,\n minVersion: void 0,\n maxVersion: void 0,\n mask: void 0,\n boostEcc: false,\n border: void 0,\n type: void 0,\n shape: void 0,\n};\n\ncustomElement<QrCodeProps>('n-qrcode', defaultProps, (props, opt) => {\n const el = opt.element;\n\n createEffect(() => {\n clearAttribute(el, ['value', 'icon']);\n });\n return (\n <>\n <style textContent={inline} />\n <QRCode {...props} />\n </>\n );\n});\n\nexport default QRCode;\n"],"names":["defaultProps","QRCode","_props","cvs","svg","img","isDark","theme","normal","mergeProps","size","iconSize","border","ecl","type","props","other","splitProps","eccMap","l","Ecc","get","m","q","h","createEffect","prev","styles","segs","makeSegments","value","qr","encodeSegments","minVersion","maxVersion","mask","boostEcc","RangeError","scale","radius","width","height","window","getComputedStyle","ctx","getContext","color","bgColor","bg","backgroundColor","clearRect","fillStyle","fillRect","y","ypos","x","getModule","xpos","shape","beginPath","arc","Math","PI","fill","moveTo","bezierCurveTo","closePath","lineTo","floor","ceil","icon","Image","src","onload","offset","drawImage","parts","push","paths","querySelectorAll","box_size","setAttribute","length","join","querySelector","Show","customElement","opt","el","element","clearAttribute","inline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["components/qrcode/index.tsx"],"sourcesContent":["import { createEffect, JSX, mergeProps, Show, splitProps } from 'solid-js';\nimport { customElement } from 'solid-element';\n\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nimport { Ecc, encodeSegments, type IntRange, makeSegments } from './qrcode';\nexport type { IntRange } from './qrcode';\nexport interface QrCodeProps {\n /** 自定义类名 */\n class?: string;\n style?: string | JSX.CSSProperties;\n /** 二维码值 */\n value: string;\n /** 二维码模块的颜色 */\n color?: string;\n /** 二维码背景色 */\n bgColor?: string;\n /**\n * 二维码尺寸\n * @default 150\n */\n size?: number;\n /** 纠错等级; 分别对应7%、15%、25%、30%的数据纠错能力\n * @default 'm'\n */\n ecl?: 'l' | 'm' | 'q' | 'h';\n /**\n * 支持的QR码模型2标准最小版本\n * @default 1\n */\n minVersion?: IntRange<1, 41>;\n /**\n * 支持的QR码模型2标准最大版本\n * @default 40\n */\n maxVersion?: IntRange<1, 41>;\n /**\n * 掩码模式; 为 -1 时,表示自动选择\n * @default -1\n */\n mask?: -1 | IntRange<0, 8>;\n /**\n * 在数据仍然适合当前版本号的情况下提高纠错级别\n * @default true\n */\n boostEcc?: boolean;\n /**\n * 模块外围的边框宽度(模块单位,非像素)\n * @default 1\n */\n border?: IntRange<1, 101>;\n /**\n * 渲染方式\n * @default 'svg'\n */\n type?: 'svg' | 'canvas';\n /**\n * 二维码图标\n */\n icon?: string;\n /**\n * 二维码图标尺寸\n * @default 7\n */\n iconSize?: number;\n /**\n * 模块形状\n * @default 'rect'\n * @since 2.9.1\n */\n shape?: 'rect' | 'rhombus' | 'heart' | 'circle';\n}\nconst QRCode = (_props: QrCodeProps) => {\n const { isDark } = theme;\n let cvs: HTMLCanvasElement | undefined;\n let svg: SVGSVGElement | undefined;\n let img: HTMLImageElement | undefined;\n const normal = mergeProps(\n {\n size: 160,\n iconSize: 7,\n border: 1,\n ecl: 'm' as const,\n type: 'svg' as const,\n },\n _props,\n );\n const [props, other] = splitProps(normal, [\n 'value',\n 'border',\n 'size',\n 'type',\n 'minVersion',\n 'maxVersion',\n 'mask',\n 'boostEcc',\n 'ecl',\n 'bgColor',\n 'color',\n 'iconSize',\n 'shape',\n ]);\n const eccMap = {\n l: Ecc.get('LOW'),\n m: Ecc.get('MEDIUM'),\n q: Ecc.get('QUARTILE'),\n h: Ecc.get('HIGH'),\n };\n\n createEffect((prev?: { color?: string; bg?: string }) => {\n isDark(); // 响应主题模式\n const segs = makeSegments(props.value);\n const qr = encodeSegments(\n segs,\n eccMap[props.ecl],\n props.minVersion,\n props.maxVersion,\n props.mask,\n props.boostEcc,\n );\n let styles: CSSStyleDeclaration;\n\n if (props.type === 'canvas') {\n if (props.size <= 0 || props.border < 0 || !cvs) throw new RangeError('Value out of range');\n const scale = props.size / (qr.size + props.border * 2);\n const radius = scale / 2; // 半径\n\n cvs.width = props.size;\n cvs.height = props.size;\n styles = window.getComputedStyle(cvs as unknown as Element);\n const ctx = cvs.getContext('2d') as CanvasRenderingContext2D;\n const color = props.color || prev?.color || styles.color;\n const bgColor = props.bgColor || prev?.bg || styles.backgroundColor;\n\n ctx.clearRect(0, 0, props.size, props.size);\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, props.size, props.size);\n ctx.fillStyle = color;\n for (let y = -props.border; y < qr.size + props.border; y++) {\n const ypos = (y + props.border) * scale;\n\n for (let x = -props.border; x < qr.size + props.border; x++) {\n if (qr.getModule(x, y)) {\n const xpos = (x + props.border) * scale;\n\n switch (props.shape) {\n case 'circle':\n ctx.beginPath();\n ctx.arc(xpos + radius, ypos + radius, radius, 0, Math.PI * 2);\n ctx.fill();\n break;\n case 'heart':\n ctx.beginPath();\n ctx.moveTo(xpos + radius, ypos + scale / 4);\n ctx.bezierCurveTo(\n xpos + scale * 0.1,\n ypos - scale * 0.2,\n xpos - scale * 0.3,\n ypos + scale * 0.6,\n xpos + radius,\n ypos + scale,\n );\n ctx.bezierCurveTo(\n xpos + scale * 1.3,\n ypos + scale * 0.6,\n xpos + scale * 0.9,\n ypos - scale * 0.2,\n xpos + radius,\n ypos + scale / 4,\n );\n ctx.closePath();\n ctx.fill();\n break;\n case 'rhombus':\n ctx.beginPath();\n ctx.moveTo(xpos + radius, ypos);\n ctx.lineTo(xpos + scale, ypos + radius);\n ctx.lineTo(xpos + radius, ypos + scale);\n ctx.lineTo(xpos, ypos + radius);\n ctx.closePath();\n ctx.fill();\n break;\n case 'rect':\n default:\n // 避免由于小数位带来的间隔问题\n ctx.fillRect(\n Math.floor(xpos),\n Math.floor(ypos),\n Math.ceil(scale),\n Math.ceil(scale),\n );\n break;\n }\n }\n }\n }\n // 恢复缩放\n // ctx.restore();\n // 如果有图标,则绘制到中心\n if (other.icon) {\n if (!img) {\n img = new Image(props.iconSize, props.iconSize);\n }\n img.src = other.icon;\n img.onload = () => {\n const offset = (props.size + props.border * scale - props.iconSize) / 2;\n\n ctx.drawImage(img!, offset, offset, props.iconSize, props.iconSize);\n };\n }\n } else {\n if (props.border < 0) {\n throw new RangeError('Border must be non-negative');\n }\n const parts: string[] = [];\n\n for (let y = 0; y < qr.size; y++) {\n for (let x = 0; x < qr.size; x++) {\n if (qr.getModule(x, y)) {\n switch (props.shape) {\n case 'circle':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border + 0.5} m -0.5, 0 a 0.5,0.5 0 1,0 1,0 a 0.5,0.5 0 1,0 -1,0`,\n );\n break;\n case 'rhombus':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border} L${x + props.border + 1},${y + props.border + 0.5} L${x + props.border + 0.5},${y + props.border + 1} L${x + props.border},${y + props.border + 0.5} Z`,\n );\n break;\n case 'heart':\n parts.push(\n `M${x + props.border + 0.5},${y + props.border + 0.25} C${x + props.border + 0.1},${y + props.border - 0.2} ${x + props.border - 0.3},${y + props.border + 0.6} ${x + props.border + 0.5},${y + props.border + 1} C${x + props.border + 1.3},${y + props.border + 0.6} ${x + props.border + 0.9},${y + props.border - 0.2} ${x + props.border + 0.5},${y + props.border + 0.25} Z`,\n );\n break;\n case 'rect':\n default:\n parts.push(`M${x + props.border},${y + props.border}h1v1h-1z`);\n break;\n }\n }\n }\n }\n const paths = svg?.querySelectorAll('path') as unknown as SVGPathElement[];\n const box_size = qr.size + props.border * 2;\n\n svg?.setAttribute('viewBox', `0 0 ${box_size} ${box_size}`);\n styles = window.getComputedStyle(svg as unknown as Element);\n if (paths.length > 0) {\n paths[0].setAttribute('d', `M0,0 h${box_size}v${box_size}H0z`);\n paths[0].setAttribute('fill', props.bgColor || prev?.bg || styles.backgroundColor);\n paths[1].setAttribute('d', parts.join(' '));\n paths[1].setAttribute('fill', props.color || prev?.color || styles.color);\n }\n // icon\n const icon = svg?.querySelector('image');\n\n if (icon) {\n const offset = `${(qr.size + props.border * 2 - props.iconSize) / 2}`;\n\n icon.setAttribute('x', offset);\n icon.setAttribute('y', offset);\n icon.setAttribute('width', `${props.iconSize}`);\n icon.setAttribute('height', `${props.iconSize}`);\n }\n }\n\n return {\n color: styles.color,\n bg: styles.backgroundColor,\n };\n });\n\n return (\n <Show when={props.type === 'svg'} fallback={<canvas ref={cvs} role=\"img\" />}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n stroke=\"none\"\n width={props.size}\n height={props.size}\n ref={svg}\n shape-rendering=\"crispEdges\"\n role=\"img\"\n >\n <path />\n <path />\n <Show when={other.icon}>\n <image href={other.icon} preserveAspectRatio=\"xMidYMid meet\" />\n </Show>\n </svg>\n </Show>\n );\n};\n\nexport type QrCodeElement = CustomElement<QrCodeProps>;\nexport const defaultProps: QrCodeProps = {\n value: '',\n icon: void 0,\n color: void 0,\n bgColor: void 0,\n size: void 0,\n iconSize: void 0,\n ecl: void 0,\n minVersion: void 0,\n maxVersion: void 0,\n mask: void 0,\n boostEcc: false,\n border: void 0,\n type: void 0,\n shape: void 0,\n};\n\ncustomElement<QrCodeProps>('n-qrcode', defaultProps, (props, opt) => {\n const el = opt.element;\n\n createEffect(() => {\n clearAttribute(el, ['value', 'icon']);\n });\n return (\n <>\n <style textContent={inline} />\n <QRCode {...props} />\n </>\n );\n});\n\nexport default QRCode;\n"],"names":["defaultProps","QRCode","_props","cvs","svg","img","isDark","theme","normal","mergeProps","size","iconSize","border","ecl","type","props","other","splitProps","eccMap","l","Ecc","get","m","q","h","createEffect","prev","styles","segs","makeSegments","value","qr","encodeSegments","minVersion","maxVersion","mask","boostEcc","RangeError","scale","radius","width","height","window","getComputedStyle","ctx","getContext","color","bgColor","bg","backgroundColor","clearRect","fillStyle","fillRect","y","ypos","x","getModule","xpos","shape","beginPath","arc","Math","PI","fill","moveTo","bezierCurveTo","closePath","lineTo","floor","ceil","icon","Image","src","onload","offset","drawImage","parts","push","paths","querySelectorAll","box_size","setAttribute","length","join","querySelector","Show","customElement","opt","el","element","clearAttribute","inline"],"mappings":"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"}
|
package/lib/qrcode/qrcode.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}(exports,{Ecc:function(){return M},encodeSegments:function(){return n},makeSegments:function(){return s}});const t=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],e=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];function r(t){if(t<l.VERSION.MIN||t>l.VERSION.MAX)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let r=Math.floor(t/7)+2;e-=(25*r-10)*r-55,t>=7&&(e-=36)}return u(208<=e&&e<=29648),e}function i(i,n){return Math.floor(r(i)/8)-t[n.ordinal][i]*e[n.ordinal][i]}function n(t,e,r=1,s=40,o=-1,a=!0){if(!(l.VERSION.MIN<=r&&r<=s&&s<=l.VERSION.MAX)||o<-1||o>7)throw RangeError("Invalid value");let f,d,c=e;for(f=r;;f++){let e=8*i(f,c),r=function(t,e){let r=0;for(let i of t){let t=i.mode.numCharCountBits(e);if(i.numChars>=1<<t)return 1/0;r+=4+t+i.bitData.length}return r}(t,f);if(r<=e){d=r;break}if(f>=s)throw RangeError("Data too long")}if(a)for(let t of[M.get("MEDIUM"),M.get("QUARTILE"),M.get("HIGH")])d<=8*i(f,t)&&(c=t);let g=[];for(let e of t)for(let t of(h(e.mode.modeBits,4,g),h(e.numChars,e.mode.numCharCountBits(f),g),e.getData()))g.push(t);u(g.length===d);let m=8*i(f,c);u(g.length<=m),h(0,Math.min(4,m-g.length),g),h(0,(8-g.length%8)%8,g),u(g.length%8==0);for(let t=236;g.length<m;t^=253)h(t,8,g);let E=[];for(;8*E.length<g.length;)E.push(0);return g.forEach((t,e)=>E[e>>>3]|=t<<7-(7&e)),new l(f,c,E,o)}function s(t){return""===t?[]:d.test(t)?[function(t){if(!d.test(t))throw RangeError("String contains non-numeric characters");let e=[];for(let r=0;r<t.length;){let i=Math.min(t.length-r,3);h(parseInt(t.substring(r,r+i),10),3*i+1,e),r+=i}return new f(m.get("NUMERIC"),t.length,e)}(t)]:c.test(t)?[function(t){let e;if(!c.test(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let r=[];for(e=0;e+2<=t.length;e+=2){let i=45*g.indexOf(t.charAt(e));h(i+=g.indexOf(t.charAt(e+1)),11,r)}return e<t.length&&h(g.indexOf(t.charAt(e)),6,r),new f(m.get("ALPHANUMERIC"),t.length,r)}(t)]:[function(t){let e=[];for(let r of t)h(r,8,e);return new f(m.get("BYTE"),t.length,e)}(function(t){t=encodeURI(t);let e=[];for(let r=0;r<t.length;r++)"%"!==t.charAt(r)?e.push(t.charCodeAt(r)):(e.push(parseInt(t.substring(r+1,r+3),16)),r+=2);return e}(t))]}function o(t,e){if(t>>>8!=0||e>>>8!=0)throw RangeError("Byte out of range");let r=0;for(let i=7;i>=0;i--)r=r<<1^(r>>>7)*285^(e>>>i&1)*t;return u(r>>>8==0),r}class l{static{this.VERSION={MIN:1,MAX:40}}static{this.PENALTY={N1:3,N2:3,N3:40,N4:10}}selectMask(t){if(-1!==t)return t;let e=0,r=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let i=this.getPenaltyScore();i<r&&(e=t,r=i),this.applyMask(t)}return u(0<=e&&e<=7),e}constructor(t,e,r,i){if(this.version=t,this.errorCorrectionLevel=e,this.modules=[],this.isFunction=[],this.MASK_PATTERNS=[(t,e)=>(t+e)%2==0,(t,e)=>e%2==0,t=>t%3==0,(t,e)=>(t+e)%3==0,(t,e)=>(Math.floor(t/3)+Math.floor(e/2))%2==0,(t,e)=>t*e%2+t*e%3==0,(t,e)=>(t*e%2+t*e%3)%2==0,(t,e)=>((t+e)%2+t*e%3)%2==0],t<l.VERSION.MIN||t>l.VERSION.MAX)throw RangeError("Version value out of range");if(i<-1||i>7)throw RangeError("Mask value out of range");this.size=4*t+17;let n=Array(this.size).fill(!1);for(let t=0;t<this.size;t++)this.modules[t]=n.slice(),this.isFunction[t]=n.slice();this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);this.drawCodewords(s),this.mask=this.selectMask(i),this.applyMask(this.mask),this.drawFormatBits(this.mask),this.isFunction=[]}getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let t=0;t<this.size;t++){let e=t%2==0;this.setFunctionModule(6,t,e),this.setFunctionModule(t,6,e)}this.drawFinderPattern(3,3);let t=this.size-4;this.drawFinderPattern(t,3),this.drawFinderPattern(3,t);let e=this.getAlignmentPatternPositions(),r=e.length;for(let t=0;t<r;t++)for(let i=0;i<r;i++)0===t&&0===i||0===t&&i===r-1||t===r-1&&0===i||this.drawAlignmentPattern(e[t],e[i]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.errorCorrectionLevel.formatBits<<3|t,r=e;for(let t=0;t<10;t++)r=r<<1^(r>>>9)*1335;let i=(e<<10|r)^21522;u(i>>>15==0);for(let t=0;t<=5;t++)this.setFunctionModule(8,t,a(i,t));this.setFunctionModule(8,7,a(i,6)),this.setFunctionModule(8,8,a(i,7)),this.setFunctionModule(7,8,a(i,8));for(let t=9;t<15;t++)this.setFunctionModule(14-t,8,a(i,t));for(let t=0;t<8;t++)this.setFunctionModule(this.size-1-t,8,a(i,t));for(let t=8;t<15;t++)this.setFunctionModule(8,this.size-15+t,a(i,t));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let e=0;e<12;e++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;u(e>>>18==0);for(let t=0;t<18;t++){let r=a(e,t),i=this.size-11+t%3,n=Math.floor(t/3);this.setFunctionModule(i,n,r),this.setFunctionModule(n,i,r)}}drawFinderPattern(t,e){for(let r=-4;r<=4;r++)for(let i=-4;i<=4;i++){let n=Math.max(Math.abs(i),Math.abs(r)),s=t+i,o=e+r;0<=s&&s<this.size&&0<=o&&o<this.size&&this.setFunctionModule(s,o,2!==n&&4!==n)}}drawAlignmentPattern(t,e){for(let r=-2;r<=2;r++)for(let i=-2;i<=2;i++)this.setFunctionModule(t+i,e+r,1!==Math.max(Math.abs(i),Math.abs(r)))}setFunctionModule(t,e,r){this.modules[e][t]=r,this.isFunction[e][t]=!0}addEccAndInterleave(n){let s=this.version,l=this.errorCorrectionLevel;if(n.length!==i(s,l))throw RangeError("Invalid argument");let h=e[l.ordinal][s],a=t[l.ordinal][s],f=Math.floor(r(s)/8),d=h-f%h,c=Math.floor(f/h),g=[],M=function(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let r=1;for(let i=0;i<t;i++){for(let t=0;t<e.length;t++)e[t]=o(e[t],r),t+1<e.length&&(e[t]^=e[t+1]);r=o(r,2)}return e}(a);for(let t=0,e=0;t<h;t++){let r=n.slice(e,e+c-a+(t<d?0:1)),i=function(t,e){let r=e.map(()=>0);for(let i of t){let t=i^r.shift();r.push(0),e.forEach((e,i)=>r[i]^=o(e,t))}return r}(r,M);e+=r.length,t<d&&r.push(0),g.push(r.concat(i))}let m=[];for(let t=0;t<g[0].length;t++)g.forEach((e,r)=>{(t!==c-a||r>=d)&&m.push(e[t])});return u(m.length===f),m}drawCodewords(t){if(t.length!==Math.floor(r(this.version)/8))throw RangeError("Invalid argument");let e=0,i=8*t.length;for(let r=this.size-1;r>=1;r-=2){6===r&&(r=5);for(let n=0;n<this.size;n++)for(let s=0;s<2;s++){let o=r-s,l=(r+1&2)==0?this.size-1-n:n;!this.isFunction[l][o]&&e<i&&(this.modules[l][o]=a(t[e>>>3],7-(7&e)),e++)}}u(e===i)}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");let e=this.MASK_PATTERNS[t];for(let t=0;t<this.size;t++)for(let r=0;r<this.size;r++)!this.isFunction[t][r]&&e(r,t)&&(this.modules[t][r]=!this.modules[t][r])}getPenaltyScore(){let t=0;for(let e=0;e<this.size;e++){let r=!1,i=0,n=[0,0,0,0,0,0,0];for(let s=0;s<this.size;s++)this.modules[e][s]===r?5==++i?t+=l.PENALTY.N1:i>5&&t++:(this.finderPenaltyAddHistory(i,n),r||(t+=this.finderPenaltyCountPatterns(n)*l.PENALTY.N3),r=this.modules[e][s],i=1);t+=this.finderPenaltyTerminateAndCount(r,i,n)*l.PENALTY.N3}for(let e=0;e<this.size;e++){let r=!1,i=0,n=[0,0,0,0,0,0,0];for(let s=0;s<this.size;s++)this.modules[s][e]===r?5==++i?t+=l.PENALTY.N1:i>5&&t++:(this.finderPenaltyAddHistory(i,n),r||(t+=this.finderPenaltyCountPatterns(n)*l.PENALTY.N3),r=this.modules[s][e],i=1);t+=this.finderPenaltyTerminateAndCount(r,i,n)*l.PENALTY.N3}for(let e=0;e<this.size-1;e++)for(let r=0;r<this.size-1;r++){let i=this.modules[e][r];i===this.modules[e][r+1]&&i===this.modules[e+1][r]&&i===this.modules[e+1][r+1]&&(t+=l.PENALTY.N2)}let e=0;for(let t of this.modules)e=t.reduce((t,e)=>t+(e?1:0),e);let r=this.size*this.size,i=Math.ceil(Math.abs(20*e-10*r)/r)-1;return u(0<=i&&i<=9),u(0<=(t+=i*l.PENALTY.N4)&&t<=2568888),t}getAlignmentPatternPositions(){if(1===this.version)return[];let t=Math.floor(this.version/7)+2,e=2*Math.floor((8*this.version+3*t+5)/(4*t-4)),r=[6];for(let i=this.size-7;r.length<t;i-=e)r.splice(1,0,i);return r}finderPenaltyCountPatterns(t){let e=t[1];if(u(e<=3*this.size),e<=0||!(t[2]===e&&t[3]===3*e&&t[4]===e&&t[5]===e))return 0;let r=0;return t[0]>=4*e&&t[6]>=e&&r++,t[6]>=4*e&&t[0]>=e&&r++,r}finderPenaltyTerminateAndCount(t,e,r){return t&&(this.finderPenaltyAddHistory(e,r),e=0),e+=this.size,this.finderPenaltyAddHistory(e,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,e){0===e[0]&&(t+=this.size),e.pop(),e.unshift(t)}}function h(t,e,r){if(e<0||e>31||t>>>e!=0)throw RangeError("Value out of range");for(let i=e-1;i>=0;i--)r.push(t>>>i&1)}function a(t,e){return(t>>>e&1)!=0}function u(t){if(!t)throw Error("Assertion error")}class f{constructor(t,e,r){if(this.mode=t,this.numChars=e,this.bitData=r,e<0)throw RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}}const d=/^[0-9]*$/,c=/^[A-Z0-9 $%*+./:-]*$/,g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";class M{constructor(t,e){this.ordinal=t,this.formatBits=e}static{this.LEVELS={LOW:new M(0,1),MEDIUM:new M(1,0),QUARTILE:new M(2,3),HIGH:new M(3,2)}}static get(t){return M.LEVELS[t]}}class m{constructor(t,e){this.modeBits=t,this.numBitsCharCount=e}static{this.modes={NUMERIC:new m(1,[10,12,14]),ALPHANUMERIC:new m(2,[9,11,13]),BYTE:new m(4,[8,16,16]),KANJI:new m(8,[8,10,12]),ECI:new m(7,[0,0,0])}}static get(t){return m.modes[t]}numCharCountBits(t){return this.numBitsCharCount[Math.floor((t+7)/17)]}}
|
|
2
|
-
//# sourceMappingURL=qrcode.js.map
|
|
1
|
+
"use strict";function t(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}Object.defineProperty(exports,"__esModule",{value:!0}),t(exports,{Ecc:function(){return R},encodeSegments:function(){return s},makeSegments:function(){return l}});const e=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],r=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];function n(t){if(t<f.VERSION.MIN||t>f.VERSION.MAX)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let r=Math.floor(t/7)+2;e-=(25*r-10)*r-55,t>=7&&(e-=36)}return g(208<=e&&e<=29648),e}function i(t,i){return Math.floor(n(t)/8)-e[i.ordinal][t]*r[i.ordinal][t]}function s(t,e,r=1,n=40,o=-1,l=!0){if(!(f.VERSION.MIN<=r&&r<=n&&n<=f.VERSION.MAX)||o<-1||o>7)throw RangeError("Invalid value");let h,a,u=e;for(h=r;;h++){let e=8*i(h,u),r=I(t,h);if(r<=e){a=r;break}if(h>=n)throw RangeError("Data too long")}if(l)for(let t of[R.get("MEDIUM"),R.get("QUARTILE"),R.get("HIGH")])a<=8*i(h,t)&&(u=t);let c=[];for(let e of t)for(let t of(d(e.mode.modeBits,4,c),d(e.numChars,e.mode.numCharCountBits(h),c),e.getData()))c.push(t);g(c.length===a);let M=8*i(h,u);g(c.length<=M),d(0,Math.min(4,M-c.length),c),d(0,(8-c.length%8)%8,c),g(c.length%8==0);for(let t=236;c.length<M;t^=253)d(t,8,c);let m=[];for(;8*m.length<c.length;)m.push(0);return c.forEach((t,e)=>m[e>>>3]|=t<<7-(7&e)),new f(h,u,m,o)}function o(t){t=encodeURI(t);let e=[];for(let r=0;r<t.length;r++)"%"!==t.charAt(r)?e.push(t.charCodeAt(r)):(e.push(parseInt(t.substring(r+1,r+3),16)),r+=2);return e}function l(t){return""===t?[]:w(t)?[C(t)]:P(t)?[F(t)]:[N(o(t))]}function h(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let r=1;for(let n=0;n<t;n++){for(let t=0;t<e.length;t++)e[t]=u(e[t],r),t+1<e.length&&(e[t]^=e[t+1]);r=u(r,2)}return e}function a(t,e){let r=e.map(()=>0);for(let n of t){let t=n^r.shift();r.push(0),e.forEach((e,n)=>r[n]^=u(e,t))}return r}function u(t,e){if(t>>>8!=0||e>>>8!=0)throw RangeError("Byte out of range");let r=0;for(let n=7;n>=0;n--)r=r<<1^(r>>>7)*285^(e>>>n&1)*t;return g(r>>>8==0),r}class f{static{this.VERSION={MIN:1,MAX:40}}static{this.PENALTY={N1:3,N2:3,N3:40,N4:10}}selectMask(t){if(-1!==t)return t;let e=0,r=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<r&&(e=t,r=n),this.applyMask(t)}return g(0<=e&&e<=7),e}constructor(t,e,r,n){if(this.version=t,this.errorCorrectionLevel=e,this.modules=[],this.isFunction=[],this.MASK_PATTERNS=[(t,e)=>(t+e)%2==0,(t,e)=>e%2==0,t=>t%3==0,(t,e)=>(t+e)%3==0,(t,e)=>(Math.floor(t/3)+Math.floor(e/2))%2==0,(t,e)=>t*e%2+t*e%3==0,(t,e)=>(t*e%2+t*e%3)%2==0,(t,e)=>((t+e)%2+t*e%3)%2==0],t<f.VERSION.MIN||t>f.VERSION.MAX)throw RangeError("Version value out of range");if(n<-1||n>7)throw RangeError("Mask value out of range");this.size=4*t+17;let i=Array(this.size).fill(!1);for(let t=0;t<this.size;t++)this.modules[t]=i.slice(),this.isFunction[t]=i.slice();this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);this.drawCodewords(s),this.mask=this.selectMask(n),this.applyMask(this.mask),this.drawFormatBits(this.mask),this.isFunction=[]}getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let t=0;t<this.size;t++){let e=t%2==0;this.setFunctionModule(6,t,e),this.setFunctionModule(t,6,e)}this.drawFinderPattern(3,3);let t=this.size-4;this.drawFinderPattern(t,3),this.drawFinderPattern(3,t);let e=this.getAlignmentPatternPositions(),r=e.length;for(let t=0;t<r;t++)for(let n=0;n<r;n++)0===t&&0===n||0===t&&n===r-1||t===r-1&&0===n||this.drawAlignmentPattern(e[t],e[n]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.errorCorrectionLevel.formatBits<<3|t,r=e;for(let t=0;t<10;t++)r=r<<1^(r>>>9)*1335;let n=(e<<10|r)^21522;g(n>>>15==0);for(let t=0;t<=5;t++)this.setFunctionModule(8,t,c(n,t));this.setFunctionModule(8,7,c(n,6)),this.setFunctionModule(8,8,c(n,7)),this.setFunctionModule(7,8,c(n,8));for(let t=9;t<15;t++)this.setFunctionModule(14-t,8,c(n,t));for(let t=0;t<8;t++)this.setFunctionModule(this.size-1-t,8,c(n,t));for(let t=8;t<15;t++)this.setFunctionModule(8,this.size-15+t,c(n,t));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let e=0;e<12;e++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;g(e>>>18==0);for(let t=0;t<18;t++){let r=c(e,t),n=this.size-11+t%3,i=Math.floor(t/3);this.setFunctionModule(n,i,r),this.setFunctionModule(i,n,r)}}drawFinderPattern(t,e){for(let r=-4;r<=4;r++)for(let n=-4;n<=4;n++){let i=Math.max(Math.abs(n),Math.abs(r)),s=t+n,o=e+r;0<=s&&s<this.size&&0<=o&&o<this.size&&this.setFunctionModule(s,o,2!==i&&4!==i)}}drawAlignmentPattern(t,e){for(let r=-2;r<=2;r++)for(let n=-2;n<=2;n++)this.setFunctionModule(t+n,e+r,1!==Math.max(Math.abs(n),Math.abs(r)))}setFunctionModule(t,e,r){this.modules[e][t]=r,this.isFunction[e][t]=!0}addEccAndInterleave(t){let s=this.version,o=this.errorCorrectionLevel;if(t.length!==i(s,o))throw RangeError("Invalid argument");let l=r[o.ordinal][s],u=e[o.ordinal][s],f=Math.floor(n(s)/8),d=l-f%l,c=Math.floor(f/l),M=[],m=h(u);for(let e=0,r=0;e<l;e++){let n=t.slice(r,r+c-u+(e<d?0:1)),i=a(n,m);r+=n.length,e<d&&n.push(0),M.push(n.concat(i))}let E=[];for(let t=0;t<M[0].length;t++)M.forEach((e,r)=>{(t!==c-u||r>=d)&&E.push(e[t])});return g(E.length===f),E}drawCodewords(t){if(t.length!==Math.floor(n(this.version)/8))throw RangeError("Invalid argument");let e=0,r=8*t.length;for(let n=this.size-1;n>=1;n-=2){6===n&&(n=5);for(let i=0;i<this.size;i++)for(let s=0;s<2;s++){let o=n-s,l=(n+1&2)==0?this.size-1-i:i;!this.isFunction[l][o]&&e<r&&(this.modules[l][o]=c(t[e>>>3],7-(7&e)),e++)}}g(e===r)}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");let e=this.MASK_PATTERNS[t];for(let t=0;t<this.size;t++)for(let r=0;r<this.size;r++)!this.isFunction[t][r]&&e(r,t)&&(this.modules[t][r]=!this.modules[t][r])}getPenaltyScore(){let t=0;for(let e=0;e<this.size;e++){let r=!1,n=0,i=[0,0,0,0,0,0,0];for(let s=0;s<this.size;s++)this.modules[e][s]===r?5==++n?t+=f.PENALTY.N1:n>5&&t++:(this.finderPenaltyAddHistory(n,i),r||(t+=this.finderPenaltyCountPatterns(i)*f.PENALTY.N3),r=this.modules[e][s],n=1);t+=this.finderPenaltyTerminateAndCount(r,n,i)*f.PENALTY.N3}for(let e=0;e<this.size;e++){let r=!1,n=0,i=[0,0,0,0,0,0,0];for(let s=0;s<this.size;s++)this.modules[s][e]===r?5==++n?t+=f.PENALTY.N1:n>5&&t++:(this.finderPenaltyAddHistory(n,i),r||(t+=this.finderPenaltyCountPatterns(i)*f.PENALTY.N3),r=this.modules[s][e],n=1);t+=this.finderPenaltyTerminateAndCount(r,n,i)*f.PENALTY.N3}for(let e=0;e<this.size-1;e++)for(let r=0;r<this.size-1;r++){let n=this.modules[e][r];n===this.modules[e][r+1]&&n===this.modules[e+1][r]&&n===this.modules[e+1][r+1]&&(t+=f.PENALTY.N2)}let e=0;for(let t of this.modules)e=t.reduce((t,e)=>t+(e?1:0),e);let r=this.size*this.size,n=Math.ceil(Math.abs(20*e-10*r)/r)-1;return g(0<=n&&n<=9),g(0<=(t+=n*f.PENALTY.N4)&&t<=2568888),t}getAlignmentPatternPositions(){if(1===this.version)return[];let t=Math.floor(this.version/7)+2,e=2*Math.floor((8*this.version+3*t+5)/(4*t-4)),r=[6];for(let n=this.size-7;r.length<t;n-=e)r.splice(1,0,n);return r}finderPenaltyCountPatterns(t){let e=t[1];if(g(e<=3*this.size),e<=0||!(t[2]===e&&t[3]===3*e&&t[4]===e&&t[5]===e))return 0;let r=0;return t[0]>=4*e&&t[6]>=e&&r++,t[6]>=4*e&&t[0]>=e&&r++,r}finderPenaltyTerminateAndCount(t,e,r){return t&&(this.finderPenaltyAddHistory(e,r),e=0),e+=this.size,this.finderPenaltyAddHistory(e,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,e){0===e[0]&&(t+=this.size),e.pop(),e.unshift(t)}}function d(t,e,r){if(e<0||e>31||t>>>e!=0)throw RangeError("Value out of range");for(let n=e-1;n>=0;n--)r.push(t>>>n&1)}function c(t,e){return(t>>>e&1)!=0}function g(t){if(!t)throw Error("Assertion error")}class M{constructor(t,e,r){if(this.mode=t,this.numChars=e,this.bitData=r,e<0)throw RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}}const m=/^[0-9]*$/,E=/^[A-Z0-9 $%*+./:-]*$/,A="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";function w(t){return m.test(t)}function P(t){return E.test(t)}function N(t){let e=[];for(let r of t)d(r,8,e);return new M(p.get("BYTE"),t.length,e)}function I(t,e){let r=0;for(let n of t){let t=n.mode.numCharCountBits(e);if(n.numChars>=1<<t)return 1/0;r+=4+t+n.bitData.length}return r}function C(t){if(!w(t))throw RangeError("String contains non-numeric characters");let e=[];for(let r=0;r<t.length;){let n=Math.min(t.length-r,3);d(parseInt(t.substring(r,r+n),10),3*n+1,e),r+=n}return new M(p.get("NUMERIC"),t.length,e)}function F(t){let e;if(!P(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let r=[];for(e=0;e+2<=t.length;e+=2){let n=45*A.indexOf(t.charAt(e));d(n+=A.indexOf(t.charAt(e+1)),11,r)}return e<t.length&&d(A.indexOf(t.charAt(e)),6,r),new M(p.get("ALPHANUMERIC"),t.length,r)}class R{constructor(t,e){this.ordinal=t,this.formatBits=e}static{this.LEVELS={LOW:new R(0,1),MEDIUM:new R(1,0),QUARTILE:new R(2,3),HIGH:new R(3,2)}}static get(t){return R.LEVELS[t]}}class p{constructor(t,e){this.modeBits=t,this.numBitsCharCount=e}static{this.modes={NUMERIC:new p(1,[10,12,14]),ALPHANUMERIC:new p(2,[9,11,13]),BYTE:new p(4,[8,16,16]),KANJI:new p(8,[8,10,12]),ECI:new p(7,[0,0,0])}}static get(t){return p.modes[t]}numCharCountBits(t){return this.numBitsCharCount[Math.floor((t+7)/17)]}}
|