@charcoal-ui/icons 1.1.0-alpha.2 → 1.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/filenames.d.ts +1 -1
- package/dist/filenames.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/package.json +2 -2
- package/src/filenames.ts +1 -1
package/dist/filenames.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** This file is auto generated. DO NOT EDIT BY HAND. */
|
|
2
|
-
export declare const KNOWN_ICON_FILES: readonly ["32/ShareIos", "32/Dot", "32/Message", "32/Gift", "32/Close", "32/Prev", "32/Next", "32/PullDown", "32/PullUp", "32/Expand", "32/Collapse", "32/Edit", "32/ShareAndroid", "32/BookmarkOff", "32/BookmarkOn", "32/NovelViewerSettings", "32/CommentOff", "32/CommentOn", "32/Home", "32/Index", "32/Serif", "32/Camera", "32/Delete", "32/Pan", "32/RollVertical", "32/RollHorizontal", "32/ZoomIn", "32/Upload", "32/Shopping", "32/User", "32/HorizontalWriting", "32/Notification", "32/SansSerif", "32/VerticalWriting", "32/NotificationOff", "24/Expand", "24/Collapse", "24/Close", "24/Pencil", "24/PencilDraw", "24/PencilText", "24/Reorder", "24/Add", "24/Subtract", "24/Star", "24/Check", "24/Send", "24/LockLock", "24/LockUnlock", "24/Up", "24/Down", "24/ReloadLoop", "24/Reload", "24/Options", "24/CommentOutline", "24/Trash", "24/TrashAlt", "24/ShareIos", "24/ViewGrid3Columns", "24/ViewGrid2Columns", "24/ViewList", "24/Upload", "24/UploadAlt", "24/DownloadAlt", "24/ArrowUp", "24/LikeOff", "24/LikeOn", "24/ArrowDown", "24/OptionsAlt", "24/PencilLive", "24/OpenInNew", "24/Settings", "24/Roll", "24/Calendar", "24/Save", "24/Logout", "24/CommentFill", "24/ShareAndroid", "16/More", "16/Back", "16/Search", "16/Add", "16/Check", "16/Menu", "16/Dot", "16/Book", "16/ArrowDown", "16/Speaker", "16/Remove", "16/BookmarkOn", "16/BookmarkOff", "16/Filter", "16/Error", "16/Info", "16/Pencil", "Inline/LikeOff", "Inline/View", "Inline/BookmarkOff", "Inline/BookmarkOn", "Inline/Breadcrumbs", "Inline/More", "Inline/ImageResponse", "Inline/Lock", "Inline/External", "Inline/Location", "Inline/
|
|
2
|
+
export declare const KNOWN_ICON_FILES: readonly ["32/ShareIos", "32/Dot", "32/Message", "32/Gift", "32/Close", "32/Prev", "32/Next", "32/PullDown", "32/PullUp", "32/Expand", "32/Collapse", "32/Edit", "32/ShareAndroid", "32/BookmarkOff", "32/BookmarkOn", "32/NovelViewerSettings", "32/CommentOff", "32/CommentOn", "32/Home", "32/Index", "32/Serif", "32/Camera", "32/Delete", "32/Pan", "32/RollVertical", "32/RollHorizontal", "32/ZoomIn", "32/Upload", "32/Shopping", "32/User", "32/HorizontalWriting", "32/Notification", "32/SansSerif", "32/VerticalWriting", "32/NotificationOff", "24/Expand", "24/Collapse", "24/Close", "24/Pencil", "24/PencilDraw", "24/PencilText", "24/Reorder", "24/Add", "24/Subtract", "24/Star", "24/Check", "24/Send", "24/LockLock", "24/LockUnlock", "24/Up", "24/Down", "24/ReloadLoop", "24/Reload", "24/Options", "24/CommentOutline", "24/Trash", "24/TrashAlt", "24/ShareIos", "24/ViewGrid3Columns", "24/ViewGrid2Columns", "24/ViewList", "24/Upload", "24/UploadAlt", "24/DownloadAlt", "24/ArrowUp", "24/LikeOff", "24/LikeOn", "24/ArrowDown", "24/OptionsAlt", "24/PencilLive", "24/OpenInNew", "24/Settings", "24/Roll", "24/Calendar", "24/Save", "24/Logout", "24/CommentFill", "24/ShareAndroid", "16/More", "16/Back", "16/Search", "16/Add", "16/Check", "16/Menu", "16/Dot", "16/Book", "16/ArrowDown", "16/Speaker", "16/Remove", "16/BookmarkOn", "16/BookmarkOff", "16/Filter", "16/Error", "16/Info", "16/Pencil", "Inline/LikeOff", "Inline/View", "Inline/BookmarkOff", "Inline/BookmarkOn", "Inline/Breadcrumbs", "Inline/More", "Inline/ImageResponse", "Inline/Lock", "Inline/External", "Inline/Location", "Inline/ViewOutline", "Inline/Like", "Inline/Smile", "Inline/SmileOn", "Inline/Check", "Inline/List", "Inline/ContextMenu", "Inline/Add", "Inline/Remove", "Inline/Images", "Inline/Nextworks", "Inline/Filter", "Inline/Users", "24/Next", "24/PullDown", "24/PullUp", "24/Prev", "24/Dot", "24/Notification", "24/NotificationOff", "24/Search", "24/Menu", "24/Index", "24/Services", "24/Error", "24/Home", "24/Warning", "24/Info", "24/QuestionOutline", "24/ChatBot", "24/ErrorOctagon", "24/Question", "24/Alart", "24/DotAlt", "24/ImageHidden", "24/AddRubi", "24/ImageReplace", "24/Text", "24/AddText", "24/FormatAlignRight", "24/FormatAlignLeft", "24/FormatAlignCenter", "24/AddImage", "24/ImgContain", "24/ImgCover", "24/BringForward", "24/BringBackward", "24/RotateRight", "24/Palette", "24/Duplicate", "24/FormatLineSpacing", "24/FormatLetterSpacing", "24/Rotate90DegreesCc", "24/Rotate90DegreesC", "24/FormatFontSize", "24/FormatFontFamily", "24/FormatColorFill", "24/FormatColorFillNoColor", "24/ChromaticAberration", "24/Move1", "24/Play", "24/Pause", "24/Microphone", "24/PauseAlt", "24/CameraVideo", "24/Camera", "24/Fov", "24/Sun", "24/Shutter", "24/Contrast", "24/FrameEffect", "24/Hue", "24/Saturation", "24/Glow", "24/Binet", "24/Overlay", "24/Flare", "24/Dust", "24/Temperature", "24/Filter", "24/Usagi", "24/Set", "24/Gift", "24/MobilePhone", "24/Users", "24/AddPeople", "24/Person", "24/Emoji", "24/Shopping", "24/UsagiAlt", "24/Fashion", "24/FaceEdit", "24/DeviceRotation", "24/Ar", "24/FrameSize", "24/Body", "24/BodyEdit", "24/HairEdit", "24/ItemRemove", "24/AddModel", "24/ChangeCharactor", "24/Pose", "24/Show", "24/ShowOutline", "24/Hide", "24/Idea", "24/Book", "24/Message", "24/Images", "24/Image", "24/Video", "24/Hashtag", "24/ImageAlt", "24/Discovery", "24/Description", "24/File", "24/Archive", "24/Invoice", "24/Announcement", "24/Link", "24/Manga", "24/Novels", "24/Contest", "24/LatestWorks", "24/Ranking", "24/Feed", "24/Groups", "24/Events", "24/Projects", "24/Codes", "24/Invalid", "32/LikeOff", "32/LikeOn", "32/LikeOnPrivate", "24/ImageHidden", "Inline/Folder", "Inline/Pencil", "Inline/Comment", "16/View", "16/ImageResponse", "16/Like", "16/Smile", "16/Comment", "16/Ranking", "16/Artwork", "24/NoImage", "24/ReadVertical", "24/ReadHorizontalLeft", "24/ReadHorizontalRight"];
|
|
3
3
|
export declare type KnownIconFile = typeof KNOWN_ICON_FILES[number];
|
|
4
4
|
//# sourceMappingURL=filenames.d.ts.map
|
package/dist/filenames.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filenames.d.ts","sourceRoot":"","sources":["../src/filenames.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"filenames.d.ts","sourceRoot":"","sources":["../src/filenames.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,eAAO,MAAM,gBAAgB,izHAAqjH,CAAC;AAEnlH,oBAAY,aAAa,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("warning"),n=require("dompurify");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}}),n.default=e,n}var i=/*#__PURE__*/t(e);function o(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(){return a=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},a.apply(this,arguments)}function s(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,c(e,n)}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function c(e,n){return c=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},c(e,n)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function f(e,n,t){return f=u()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var i=new(Function.bind.apply(e,r));return t&&c(i,t.prototype),i},f.apply(null,arguments)}function d(e){var n="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return f(e,arguments,l(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),c(t,e)},d(e)}var p=/*#__PURE__*/function(e){function n(t){var r;return r=e.call(this,t)||this,Object.setPrototypeOf(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r),this instanceof n?this.constructor:void 0),r}return s(n,e),n}(/*#__PURE__*/d(Error)),h=/*#__PURE__*/function(){function e(e,n){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=n}var n=e.prototype;return n.isLoading=function(){return void 0!==this._promise},n.fetch=function(e){function n(){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(){try{var e=this;return void 0!==e._resultSvg?Promise.resolve(e._resultSvg):(e._promise||(e._promise=e._getSource().then(function(e){return fetch(e)}).then(function(n){if(!n.ok)throw new p('Failed to fetch <pixiv-icon name="'+e._name+'">');return n.text()}).then(function(n){return e._resultSvg=n,e._resultSvg}).finally(function(){e._promise=void 0})),Promise.resolve(e._promise))}catch(e){return Promise.reject(e)}}),e}(),m=new Map,v=/*#__PURE__*/function(){function e(e,n){this.fetcher=void 0,this.fetcher=new h(e,function(){return Promise.resolve(n)})}e.find=function(e){return m.get(e)},e.register=function(n,t){var r=new e(n,t);m.set(n,r)};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),g=/*#__PURE__*/function(){function e(e){this.fetcher=void 0,this.fetcher=new h(e,function(){return function(e){try{var n=e.split("/"),t=n[1];return Promise.resolve((i="../svg/"+encodeURIComponent(n[0])+"/"+encodeURIComponent(t)+".svg",Promise.resolve().then(function(){/*#__PURE__*/return r(require(i))}))).then(function(e){return e.default})}catch(e){return Promise.reject(e)}var i}(e)})}e.findOrRegister=function(n){var t=m.get(n);if(t)return t;var r=new e(n);return m.set(n,r),r};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),w="undefined"==typeof window,b="undefined"!=typeof HTMLElement;!w&&b||(globalThis.HTMLElement=/*#__PURE__*/function(){return function(){}}());var y=["name","scale","unsafe-non-guideline-scale"],I=/*#__PURE__*/function(e){function t(){var n;return(n=e.call(this)||this).svgContent=void 0,n.observer=void 0,n.isVisible=!1,n.attachShadow({mode:"open"}),n}s(t,e),t.extend=function(e){i.default(!w,"Using `PixivIcon.extend()` on server has no effect"),w||Object.entries(e).forEach(function(e){var n=e[0],t=e[1];if(!n.includes("/"))throw new TypeError(n+' is not a valid icon name. "name" must be named like [size]/[Name].');v.register(n,t)})};var r,l,c,u=t.prototype;return u.connectedCallback=function(){try{var e=this;return e.render(),Promise.resolve(e.waitUntilVisible()).then(function(){return e.isVisible=!0,Promise.resolve(e.loadSvg(e.props.name)).then(function(){})})}catch(e){return Promise.reject(e)}},u.disconnectedCallback=function(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1},u.attributeChangedCallback=function(e,n,t){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(t))},u.render=function(){var e,t=null!=(e=this.forceResizedSize)?e:this.scaledSize,r=n.sanitize("<style>\n :host {\n display: inline-flex;\n --size: "+t+"px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>",{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),i=n.sanitize(void 0!==this.svgContent?this.svgContent:'<svg viewBox="0 0 '+t+" "+t+'"></svg>',{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=r+i},u.loadSvg=function(e){try{var n,t=this,r=null!=(n=v.find(e))?n:g.findOrRegister(e);return Promise.resolve(r.fetch()).then(function(e){t.svgContent=e,t.render()})}catch(e){return Promise.reject(e)}},u.waitUntilVisible=function(){var e=this;return new Promise(function(n){e.observer=new IntersectionObserver(function(t){var r;t[0].isIntersecting&&(null==(r=e.observer)||r.disconnect(),e.observer=void 0,n())},{rootMargin:"50px"}),e.observer.observe(e)})},r=t,c=[{key:"observedAttributes",get:function(){return y}}],(l=[{key:"props",get:function(){var e=this,n=Object.fromEntries(y.map(function(n){return[n,e.getAttribute(n)]})),t=n.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(t+' is not a valid icon name. "name" must be named like [size]/[Name].');return a({},n,{name:t})}},{key:"forceResizedSize",get:function(){if(null===this.props["unsafe-non-guideline-scale"])return null;var e=this.props.name.split("/")[0],n=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*n:Number(e)*n}},{key:"scaledSize",get:function(){var e,n=this.props.name.split("/")[0],t=Number(null!=(e=this.props.scale)?e:"1");switch(n){case"Inline":return 2===t?32:16;case"24":return Number(n)*t;default:return Number(n)}}}])&&o(r.prototype,l),c&&o(r,c),Object.defineProperty(r,"prototype",{writable:!1}),t}(/*#__PURE__*/d(HTMLElement));I.tagName="pixiv-icon",w||window.customElements.get(I.tagName)||(window.PixivIcon=I,window.customElements.define(I.tagName,I)),exports.KNOWN_ICON_FILES=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/View","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage"],exports.PixivIcon=I,exports.PixivIconLoadError=p;
|
|
1
|
+
var e=require("warning"),n=require("dompurify");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}}),n.default=e,n}var i=/*#__PURE__*/t(e);function o(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(){return a=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},a.apply(this,arguments)}function s(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,c(e,n)}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function c(e,n){return c=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},c(e,n)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function f(e,n,t){return f=u()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var i=new(Function.bind.apply(e,r));return t&&c(i,t.prototype),i},f.apply(null,arguments)}function d(e){var n="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return f(e,arguments,l(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),c(t,e)},d(e)}var p=/*#__PURE__*/function(e){function n(t){var r;return r=e.call(this,t)||this,Object.setPrototypeOf(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r),this instanceof n?this.constructor:void 0),r}return s(n,e),n}(/*#__PURE__*/d(Error)),h=/*#__PURE__*/function(){function e(e,n){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=n}var n=e.prototype;return n.isLoading=function(){return void 0!==this._promise},n.fetch=function(e){function n(){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(){try{var e=this;return void 0!==e._resultSvg?Promise.resolve(e._resultSvg):(e._promise||(e._promise=e._getSource().then(function(e){return fetch(e)}).then(function(n){if(!n.ok)throw new p('Failed to fetch <pixiv-icon name="'+e._name+'">');return n.text()}).then(function(n){return e._resultSvg=n,e._resultSvg}).finally(function(){e._promise=void 0})),Promise.resolve(e._promise))}catch(e){return Promise.reject(e)}}),e}(),m=new Map,v=/*#__PURE__*/function(){function e(e,n){this.fetcher=void 0,this.fetcher=new h(e,function(){return Promise.resolve(n)})}e.find=function(e){return m.get(e)},e.register=function(n,t){var r=new e(n,t);m.set(n,r)};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),g=/*#__PURE__*/function(){function e(e){this.fetcher=void 0,this.fetcher=new h(e,function(){return function(e){try{var n=e.split("/"),t=n[1];return Promise.resolve((i="../svg/"+encodeURIComponent(n[0])+"/"+encodeURIComponent(t)+".svg",Promise.resolve().then(function(){/*#__PURE__*/return r(require(i))}))).then(function(e){return e.default})}catch(e){return Promise.reject(e)}var i}(e)})}e.findOrRegister=function(n){var t=m.get(n);if(t)return t;var r=new e(n);return m.set(n,r),r};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),w="undefined"==typeof window,b="undefined"!=typeof HTMLElement;!w&&b||(globalThis.HTMLElement=/*#__PURE__*/function(){return function(){}}());var y=["name","scale","unsafe-non-guideline-scale"],I=/*#__PURE__*/function(e){function t(){var n;return(n=e.call(this)||this).svgContent=void 0,n.observer=void 0,n.isVisible=!1,n.attachShadow({mode:"open"}),n}s(t,e),t.extend=function(e){i.default(!w,"Using `PixivIcon.extend()` on server has no effect"),w||Object.entries(e).forEach(function(e){var n=e[0],t=e[1];if(!n.includes("/"))throw new TypeError(n+' is not a valid icon name. "name" must be named like [size]/[Name].');v.register(n,t)})};var r,l,c,u=t.prototype;return u.connectedCallback=function(){try{var e=this;return e.render(),Promise.resolve(e.waitUntilVisible()).then(function(){return e.isVisible=!0,Promise.resolve(e.loadSvg(e.props.name)).then(function(){})})}catch(e){return Promise.reject(e)}},u.disconnectedCallback=function(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1},u.attributeChangedCallback=function(e,n,t){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(t))},u.render=function(){var e,t=null!=(e=this.forceResizedSize)?e:this.scaledSize,r=n.sanitize("<style>\n :host {\n display: inline-flex;\n --size: "+t+"px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>",{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),i=n.sanitize(void 0!==this.svgContent?this.svgContent:'<svg viewBox="0 0 '+t+" "+t+'"></svg>',{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=r+i},u.loadSvg=function(e){try{var n,t=this,r=null!=(n=v.find(e))?n:g.findOrRegister(e);return Promise.resolve(r.fetch()).then(function(e){t.svgContent=e,t.render()})}catch(e){return Promise.reject(e)}},u.waitUntilVisible=function(){var e=this;return new Promise(function(n){e.observer=new IntersectionObserver(function(t){var r;t[0].isIntersecting&&(null==(r=e.observer)||r.disconnect(),e.observer=void 0,n())},{rootMargin:"50px"}),e.observer.observe(e)})},r=t,c=[{key:"observedAttributes",get:function(){return y}}],(l=[{key:"props",get:function(){var e=this,n=Object.fromEntries(y.map(function(n){return[n,e.getAttribute(n)]})),t=n.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(t+' is not a valid icon name. "name" must be named like [size]/[Name].');return a({},n,{name:t})}},{key:"forceResizedSize",get:function(){if(null===this.props["unsafe-non-guideline-scale"])return null;var e=this.props.name.split("/")[0],n=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*n:Number(e)*n}},{key:"scaledSize",get:function(){var e,n=this.props.name.split("/")[0],t=Number(null!=(e=this.props.scale)?e:"1");switch(n){case"Inline":return 2===t?32:16;case"24":return Number(n)*t;default:return Number(n)}}}])&&o(r.prototype,l),c&&o(r,c),Object.defineProperty(r,"prototype",{writable:!1}),t}(/*#__PURE__*/d(HTMLElement));I.tagName="pixiv-icon",w||window.customElements.get(I.tagName)||(window.PixivIcon=I,window.customElements.define(I.tagName,I)),exports.KNOWN_ICON_FILES=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/ViewOutline","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage","24/ReadVertical","24/ReadHorizontalLeft","24/ReadHorizontalRight"],exports.PixivIcon=I,exports.PixivIconLoadError=p;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/index.ts","../src/filenames.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/View\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n"],"names":["PixivIconLoadError","message","_this","Object","setPrototypeOf","Error","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","this","isLoading","fetch","_this3","then","src","response","ok","text","svg","pool","Map","UrlLoader","url","fetcher","Promise","resolve","find","get","register","loader","set","FileLoader","fullName","split","encodeURIComponent","getSourceFromName","findOrRegister","registeredLoader","newLoader","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","svgContent","observer","isVisible","attachShadow","mode","extend","map","warning","entries","forEach","includes","TypeError","connectedCallback","render","waitUntilVisible","loadSvg","props","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","size","forceResizedSize","scaledSize","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","_this5","_this6","IntersectionObserver","isIntersecting","rootMargin","ROOT_MARGIN","observe","partial","fromEntries","attribute","_this7","getAttribute","scale","Number","tagName","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/index.ts","../src/filenames.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/ViewOutline\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\",\"24/ReadVertical\",\"24/ReadHorizontalLeft\",\"24/ReadHorizontalRight\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n"],"names":["PixivIconLoadError","message","_this","Object","setPrototypeOf","Error","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","this","isLoading","fetch","_this3","then","src","response","ok","text","svg","pool","Map","UrlLoader","url","fetcher","Promise","resolve","find","get","register","loader","set","FileLoader","fullName","split","encodeURIComponent","getSourceFromName","findOrRegister","registeredLoader","newLoader","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","svgContent","observer","isVisible","attachShadow","mode","extend","map","warning","entries","forEach","includes","TypeError","connectedCallback","render","waitUntilVisible","loadSvg","props","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","size","forceResizedSize","scaledSize","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","_this5","_this6","IntersectionObserver","isIntersecting","rootMargin","ROOT_MARGIN","observe","partial","fromEntries","attribute","_this7","getAttribute","scale","Number","tagName","customElements","define"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"warning";import{sanitize as t}from"dompurify";function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},i.apply(this,arguments)}class n extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target)}}class o{constructor(e,t){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=t}isLoading(){return void 0!==this._promise}async fetch(){return void 0!==this._resultSvg?this._resultSvg:(this._promise||(this._promise=this._getSource().then(e=>fetch(e)).then(e=>{if(!e.ok)throw new n(`Failed to fetch <pixiv-icon name="${this._name}">`);return e.text()}).then(e=>(this._resultSvg=e,this._resultSvg)).finally(()=>{this._promise=void 0})),this._promise)}}const r=new Map;class s{static find(e){return r.get(e)}static register(e,t){const i=new s(e,t);r.set(e,i)}constructor(e,t){this.fetcher=void 0,this.fetcher=new o(e,()=>Promise.resolve(t))}fetch(){return this.fetcher.fetch()}isLoading(){return this.fetcher.isLoading()}}class a{static findOrRegister(e){const t=r.get(e);if(t)return t;const i=new a(e);return r.set(e,i),i}constructor(e){this.fetcher=void 0,this.fetcher=new o(e,()=>async function(e){const[t,i]=e.split("/"),{default:n}=await import(`../svg/${encodeURIComponent(t)}/${encodeURIComponent(i)}.svg`);return n}(e))}fetch(){return this.fetcher.fetch()}isLoading(){return this.fetcher.isLoading()}}const l="undefined"==typeof window,c="undefined"!=typeof HTMLElement;!l&&c||(globalThis.HTMLElement=class{});const d=["name","scale","unsafe-non-guideline-scale"];class h extends HTMLElement{static extend(t){e(!l,"Using `PixivIcon.extend()` on server has no effect"),l||Object.entries(t).forEach(([e,t])=>{if(!e.includes("/"))throw new TypeError(`${e} is not a valid icon name. "name" must be named like [size]/[Name].`);s.register(e,t)})}static get observedAttributes(){return d}get props(){const e=Object.fromEntries(d.map(e=>[e,this.getAttribute(e)])),t=e.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(`${t} is not a valid icon name. "name" must be named like [size]/[Name].`);return i({},e,{name:t})}get forceResizedSize(){if(null===this.props["unsafe-non-guideline-scale"])return null;const[e]=this.props.name.split("/"),t=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*t:Number(e)*t}get scaledSize(){var e;const[t]=this.props.name.split("/"),i=Number(null!=(e=this.props.scale)?e:"1");switch(t){case"Inline":return 2===i?32:16;case"24":return Number(t)*i;default:return Number(t)}}constructor(){super(),this.svgContent=void 0,this.observer=void 0,this.isVisible=!1,this.attachShadow({mode:"open"})}async connectedCallback(){this.render(),await this.waitUntilVisible(),this.isVisible=!0,await this.loadSvg(this.props.name)}disconnectedCallback(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1}attributeChangedCallback(e,t,i){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(i))}render(){var e;const i=null!=(e=this.forceResizedSize)?e:this.scaledSize,n=t(`<style>\n :host {\n display: inline-flex;\n --size: ${i}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),o=t(void 0!==this.svgContent?this.svgContent:`<svg viewBox="0 0 ${i} ${i}"></svg>`,{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=n+o}async loadSvg(e){var t;const i=null!=(t=s.find(e))?t:a.findOrRegister(e);this.svgContent=await i.fetch(),this.render()}waitUntilVisible(){return new Promise(e=>{this.observer=new IntersectionObserver(([t])=>{var i;t.isIntersecting&&(null==(i=this.observer)||i.disconnect(),this.observer=void 0,e())},{rootMargin:"50px"}),this.observer.observe(this)})}}h.tagName="pixiv-icon";const m=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/
|
|
1
|
+
import e from"warning";import{sanitize as t}from"dompurify";function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},i.apply(this,arguments)}class n extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target)}}class o{constructor(e,t){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=t}isLoading(){return void 0!==this._promise}async fetch(){return void 0!==this._resultSvg?this._resultSvg:(this._promise||(this._promise=this._getSource().then(e=>fetch(e)).then(e=>{if(!e.ok)throw new n(`Failed to fetch <pixiv-icon name="${this._name}">`);return e.text()}).then(e=>(this._resultSvg=e,this._resultSvg)).finally(()=>{this._promise=void 0})),this._promise)}}const r=new Map;class s{static find(e){return r.get(e)}static register(e,t){const i=new s(e,t);r.set(e,i)}constructor(e,t){this.fetcher=void 0,this.fetcher=new o(e,()=>Promise.resolve(t))}fetch(){return this.fetcher.fetch()}isLoading(){return this.fetcher.isLoading()}}class a{static findOrRegister(e){const t=r.get(e);if(t)return t;const i=new a(e);return r.set(e,i),i}constructor(e){this.fetcher=void 0,this.fetcher=new o(e,()=>async function(e){const[t,i]=e.split("/"),{default:n}=await import(`../svg/${encodeURIComponent(t)}/${encodeURIComponent(i)}.svg`);return n}(e))}fetch(){return this.fetcher.fetch()}isLoading(){return this.fetcher.isLoading()}}const l="undefined"==typeof window,c="undefined"!=typeof HTMLElement;!l&&c||(globalThis.HTMLElement=class{});const d=["name","scale","unsafe-non-guideline-scale"];class h extends HTMLElement{static extend(t){e(!l,"Using `PixivIcon.extend()` on server has no effect"),l||Object.entries(t).forEach(([e,t])=>{if(!e.includes("/"))throw new TypeError(`${e} is not a valid icon name. "name" must be named like [size]/[Name].`);s.register(e,t)})}static get observedAttributes(){return d}get props(){const e=Object.fromEntries(d.map(e=>[e,this.getAttribute(e)])),t=e.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(`${t} is not a valid icon name. "name" must be named like [size]/[Name].`);return i({},e,{name:t})}get forceResizedSize(){if(null===this.props["unsafe-non-guideline-scale"])return null;const[e]=this.props.name.split("/"),t=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*t:Number(e)*t}get scaledSize(){var e;const[t]=this.props.name.split("/"),i=Number(null!=(e=this.props.scale)?e:"1");switch(t){case"Inline":return 2===i?32:16;case"24":return Number(t)*i;default:return Number(t)}}constructor(){super(),this.svgContent=void 0,this.observer=void 0,this.isVisible=!1,this.attachShadow({mode:"open"})}async connectedCallback(){this.render(),await this.waitUntilVisible(),this.isVisible=!0,await this.loadSvg(this.props.name)}disconnectedCallback(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1}attributeChangedCallback(e,t,i){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(i))}render(){var e;const i=null!=(e=this.forceResizedSize)?e:this.scaledSize,n=t(`<style>\n :host {\n display: inline-flex;\n --size: ${i}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),o=t(void 0!==this.svgContent?this.svgContent:`<svg viewBox="0 0 ${i} ${i}"></svg>`,{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=n+o}async loadSvg(e){var t;const i=null!=(t=s.find(e))?t:a.findOrRegister(e);this.svgContent=await i.fetch(),this.render()}waitUntilVisible(){return new Promise(e=>{this.observer=new IntersectionObserver(([t])=>{var i;t.isIntersecting&&(null==(i=this.observer)||i.disconnect(),this.observer=void 0,e())},{rootMargin:"50px"}),this.observer.observe(this)})}}h.tagName="pixiv-icon";const m=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/ViewOutline","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage","24/ReadVertical","24/ReadHorizontalLeft","24/ReadHorizontalRight"];l||window.customElements.get(h.tagName)||(window.PixivIcon=h,window.customElements.define(h.tagName,h));export{m as KNOWN_ICON_FILES,h as PixivIcon,n as PixivIconLoadError};
|
|
2
2
|
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/filenames.ts","../src/index.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/View\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n"],"names":["PixivIconLoadError","Error","constructor","message","super","Object","setPrototypeOf","this","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","isLoading","async","then","src","fetch","response","ok","text","svg","finally","pool","Map","UrlLoader","static","get","url","loader","set","fetcher","Promise","resolve","FileLoader","registeredLoader","newLoader","fullName","size","split","default","filename","encodeURIComponent","getSourceFromName","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","map","warning","entries","forEach","includes","TypeError","register","observedAttributes","props","partial","fromEntries","attribute","getAttribute","forceResizedSize","scale","Number","scaledSize","svgContent","observer","isVisible","attachShadow","mode","render","waitUntilVisible","loadSvg","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","find","findOrRegister","IntersectionObserver","first","isIntersecting","rootMargin","observe","tagName","KNOWN_ICON_FILES","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/filenames.ts","../src/index.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/ViewOutline\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\",\"24/ReadVertical\",\"24/ReadHorizontalLeft\",\"24/ReadHorizontalRight\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n"],"names":["PixivIconLoadError","Error","constructor","message","super","Object","setPrototypeOf","this","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","isLoading","async","then","src","fetch","response","ok","text","svg","finally","pool","Map","UrlLoader","static","get","url","loader","set","fetcher","Promise","resolve","FileLoader","registeredLoader","newLoader","fullName","size","split","default","filename","encodeURIComponent","getSourceFromName","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","map","warning","entries","forEach","includes","TypeError","register","observedAttributes","props","partial","fromEntries","attribute","getAttribute","forceResizedSize","scale","Number","scaledSize","svgContent","observer","isVisible","attachShadow","mode","render","waitUntilVisible","loadSvg","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","find","findOrRegister","IntersectionObserver","first","isIntersecting","rootMargin","observe","tagName","KNOWN_ICON_FILES","customElements","define"],"mappings":"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"}
|
package/dist/index.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"warning";import{sanitize as n}from"dompurify";function t(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(){return r=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},r.apply(this,arguments)}function i(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,a(e,n)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function a(e,n){return a=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},a(e,n)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function l(e,n,t){return l=s()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var i=new(Function.bind.apply(e,r));return t&&a(i,t.prototype),i},l.apply(null,arguments)}function c(e){var n="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return l(e,arguments,o(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),a(t,e)},c(e)}var u=/*#__PURE__*/function(e){function n(t){var r;return r=e.call(this,t)||this,Object.setPrototypeOf(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r),this instanceof n?this.constructor:void 0),r}return i(n,e),n}(/*#__PURE__*/c(Error)),f=/*#__PURE__*/function(){function e(e,n){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=n}var n=e.prototype;return n.isLoading=function(){return void 0!==this._promise},n.fetch=function(e){function n(){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(){try{var e=this;return void 0!==e._resultSvg?Promise.resolve(e._resultSvg):(e._promise||(e._promise=e._getSource().then(function(e){return fetch(e)}).then(function(n){if(!n.ok)throw new u('Failed to fetch <pixiv-icon name="'+e._name+'">');return n.text()}).then(function(n){return e._resultSvg=n,e._resultSvg}).finally(function(){e._promise=void 0})),Promise.resolve(e._promise))}catch(e){return Promise.reject(e)}}),e}(),d=new Map,p=/*#__PURE__*/function(){function e(e,n){this.fetcher=void 0,this.fetcher=new f(e,function(){return Promise.resolve(n)})}e.find=function(e){return d.get(e)},e.register=function(n,t){var r=new e(n,t);d.set(n,r)};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),m=/*#__PURE__*/function(){function e(e){this.fetcher=void 0,this.fetcher=new f(e,function(){return function(e){try{var n=e.split("/"),t=n[1];return Promise.resolve(import("../svg/"+encodeURIComponent(n[0])+"/"+encodeURIComponent(t)+".svg")).then(function(e){return e.default})}catch(e){return Promise.reject(e)}}(e)})}e.findOrRegister=function(n){var t=d.get(n);if(t)return t;var r=new e(n);return d.set(n,r),r};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),h="undefined"==typeof window,v="undefined"!=typeof HTMLElement;!h&&v||(globalThis.HTMLElement=/*#__PURE__*/function(){return function(){}}());var g=["name","scale","unsafe-non-guideline-scale"],w=/*#__PURE__*/function(o){function a(){var e;return(e=o.call(this)||this).svgContent=void 0,e.observer=void 0,e.isVisible=!1,e.attachShadow({mode:"open"}),e}i(a,o),a.extend=function(n){e(!h,"Using `PixivIcon.extend()` on server has no effect"),h||Object.entries(n).forEach(function(e){var n=e[0],t=e[1];if(!n.includes("/"))throw new TypeError(n+' is not a valid icon name. "name" must be named like [size]/[Name].');p.register(n,t)})};var s,l,c,u=a.prototype;return u.connectedCallback=function(){try{var e=this;return e.render(),Promise.resolve(e.waitUntilVisible()).then(function(){return e.isVisible=!0,Promise.resolve(e.loadSvg(e.props.name)).then(function(){})})}catch(e){return Promise.reject(e)}},u.disconnectedCallback=function(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1},u.attributeChangedCallback=function(e,n,t){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(t))},u.render=function(){var e,t=null!=(e=this.forceResizedSize)?e:this.scaledSize,r=n("<style>\n :host {\n display: inline-flex;\n --size: "+t+"px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>",{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),i=n(void 0!==this.svgContent?this.svgContent:'<svg viewBox="0 0 '+t+" "+t+'"></svg>',{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=r+i},u.loadSvg=function(e){try{var n,t=this,r=null!=(n=p.find(e))?n:m.findOrRegister(e);return Promise.resolve(r.fetch()).then(function(e){t.svgContent=e,t.render()})}catch(e){return Promise.reject(e)}},u.waitUntilVisible=function(){var e=this;return new Promise(function(n){e.observer=new IntersectionObserver(function(t){var r;t[0].isIntersecting&&(null==(r=e.observer)||r.disconnect(),e.observer=void 0,n())},{rootMargin:"50px"}),e.observer.observe(e)})},s=a,c=[{key:"observedAttributes",get:function(){return g}}],(l=[{key:"props",get:function(){var e=this,n=Object.fromEntries(g.map(function(n){return[n,e.getAttribute(n)]})),t=n.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(t+' is not a valid icon name. "name" must be named like [size]/[Name].');return r({},n,{name:t})}},{key:"forceResizedSize",get:function(){if(null===this.props["unsafe-non-guideline-scale"])return null;var e=this.props.name.split("/")[0],n=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*n:Number(e)*n}},{key:"scaledSize",get:function(){var e,n=this.props.name.split("/")[0],t=Number(null!=(e=this.props.scale)?e:"1");switch(n){case"Inline":return 2===t?32:16;case"24":return Number(n)*t;default:return Number(n)}}}])&&t(s.prototype,l),c&&t(s,c),Object.defineProperty(s,"prototype",{writable:!1}),a}(/*#__PURE__*/c(HTMLElement));w.tagName="pixiv-icon";var y=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/View","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage"];h||window.customElements.get(w.tagName)||(window.PixivIcon=w,window.customElements.define(w.tagName,w));export{y as KNOWN_ICON_FILES,w as PixivIcon,u as PixivIconLoadError};
|
|
1
|
+
import e from"warning";import{sanitize as n}from"dompurify";function t(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(){return r=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},r.apply(this,arguments)}function i(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,a(e,n)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function a(e,n){return a=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},a(e,n)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function l(e,n,t){return l=s()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var i=new(Function.bind.apply(e,r));return t&&a(i,t.prototype),i},l.apply(null,arguments)}function c(e){var n="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return l(e,arguments,o(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),a(t,e)},c(e)}var u=/*#__PURE__*/function(e){function n(t){var r;return r=e.call(this,t)||this,Object.setPrototypeOf(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r),this instanceof n?this.constructor:void 0),r}return i(n,e),n}(/*#__PURE__*/c(Error)),f=/*#__PURE__*/function(){function e(e,n){this._name=void 0,this._getSource=void 0,this._promise=void 0,this._resultSvg=void 0,this._name=e,this._getSource=n}var n=e.prototype;return n.isLoading=function(){return void 0!==this._promise},n.fetch=function(e){function n(){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(){try{var e=this;return void 0!==e._resultSvg?Promise.resolve(e._resultSvg):(e._promise||(e._promise=e._getSource().then(function(e){return fetch(e)}).then(function(n){if(!n.ok)throw new u('Failed to fetch <pixiv-icon name="'+e._name+'">');return n.text()}).then(function(n){return e._resultSvg=n,e._resultSvg}).finally(function(){e._promise=void 0})),Promise.resolve(e._promise))}catch(e){return Promise.reject(e)}}),e}(),d=new Map,p=/*#__PURE__*/function(){function e(e,n){this.fetcher=void 0,this.fetcher=new f(e,function(){return Promise.resolve(n)})}e.find=function(e){return d.get(e)},e.register=function(n,t){var r=new e(n,t);d.set(n,r)};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),m=/*#__PURE__*/function(){function e(e){this.fetcher=void 0,this.fetcher=new f(e,function(){return function(e){try{var n=e.split("/"),t=n[1];return Promise.resolve(import("../svg/"+encodeURIComponent(n[0])+"/"+encodeURIComponent(t)+".svg")).then(function(e){return e.default})}catch(e){return Promise.reject(e)}}(e)})}e.findOrRegister=function(n){var t=d.get(n);if(t)return t;var r=new e(n);return d.set(n,r),r};var n=e.prototype;return n.fetch=function(){return this.fetcher.fetch()},n.isLoading=function(){return this.fetcher.isLoading()},e}(),h="undefined"==typeof window,v="undefined"!=typeof HTMLElement;!h&&v||(globalThis.HTMLElement=/*#__PURE__*/function(){return function(){}}());var g=["name","scale","unsafe-non-guideline-scale"],w=/*#__PURE__*/function(o){function a(){var e;return(e=o.call(this)||this).svgContent=void 0,e.observer=void 0,e.isVisible=!1,e.attachShadow({mode:"open"}),e}i(a,o),a.extend=function(n){e(!h,"Using `PixivIcon.extend()` on server has no effect"),h||Object.entries(n).forEach(function(e){var n=e[0],t=e[1];if(!n.includes("/"))throw new TypeError(n+' is not a valid icon name. "name" must be named like [size]/[Name].');p.register(n,t)})};var s,l,c,u=a.prototype;return u.connectedCallback=function(){try{var e=this;return e.render(),Promise.resolve(e.waitUntilVisible()).then(function(){return e.isVisible=!0,Promise.resolve(e.loadSvg(e.props.name)).then(function(){})})}catch(e){return Promise.reject(e)}},u.disconnectedCallback=function(){var e;null==(e=this.observer)||e.disconnect(),this.observer=void 0,this.isVisible=!1},u.attributeChangedCallback=function(e,n,t){this.isVisible&&("name"!==e?void 0===this.svgContent?this.loadSvg(this.props.name):this.render():this.loadSvg(t))},u.render=function(){var e,t=null!=(e=this.forceResizedSize)?e:this.scaledSize,r=n("<style>\n :host {\n display: inline-flex;\n --size: "+t+"px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>",{ALLOWED_TAGS:["style"],FORCE_BODY:!0}),i=n(void 0!==this.svgContent?this.svgContent:'<svg viewBox="0 0 '+t+" "+t+'"></svg>',{USE_PROFILES:{svg:!0,svgFilters:!0}});this.shadowRoot.innerHTML=r+i},u.loadSvg=function(e){try{var n,t=this,r=null!=(n=p.find(e))?n:m.findOrRegister(e);return Promise.resolve(r.fetch()).then(function(e){t.svgContent=e,t.render()})}catch(e){return Promise.reject(e)}},u.waitUntilVisible=function(){var e=this;return new Promise(function(n){e.observer=new IntersectionObserver(function(t){var r;t[0].isIntersecting&&(null==(r=e.observer)||r.disconnect(),e.observer=void 0,n())},{rootMargin:"50px"}),e.observer.observe(e)})},s=a,c=[{key:"observedAttributes",get:function(){return g}}],(l=[{key:"props",get:function(){var e=this,n=Object.fromEntries(g.map(function(n){return[n,e.getAttribute(n)]})),t=n.name;if(null===t)throw new TypeError('property "name" is required.');if(!t.includes("/"))throw new TypeError(t+' is not a valid icon name. "name" must be named like [size]/[Name].');return r({},n,{name:t})}},{key:"forceResizedSize",get:function(){if(null===this.props["unsafe-non-guideline-scale"])return null;var e=this.props.name.split("/")[0],n=Number(this.props["unsafe-non-guideline-scale"]);return"Inline"===e?16*n:Number(e)*n}},{key:"scaledSize",get:function(){var e,n=this.props.name.split("/")[0],t=Number(null!=(e=this.props.scale)?e:"1");switch(n){case"Inline":return 2===t?32:16;case"24":return Number(n)*t;default:return Number(n)}}}])&&t(s.prototype,l),c&&t(s,c),Object.defineProperty(s,"prototype",{writable:!1}),a}(/*#__PURE__*/c(HTMLElement));w.tagName="pixiv-icon";var y=["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/ViewOutline","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage","24/ReadVertical","24/ReadHorizontalLeft","24/ReadHorizontalRight"];h||window.customElements.get(w.tagName)||(window.PixivIcon=w,window.customElements.define(w.tagName,w));export{y as KNOWN_ICON_FILES,w as PixivIcon,u as PixivIconLoadError};
|
|
2
2
|
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.js","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/filenames.ts","../src/index.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/View\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n"],"names":["PixivIconLoadError","message","_this","Object","setPrototypeOf","Error","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","this","isLoading","fetch","_this3","then","src","response","ok","text","svg","pool","Map","UrlLoader","url","fetcher","Promise","resolve","find","get","register","loader","set","FileLoader","fullName","split","import","encodeURIComponent","getSourceFromName","findOrRegister","registeredLoader","newLoader","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","svgContent","observer","isVisible","attachShadow","mode","extend","map","warning","entries","forEach","includes","TypeError","connectedCallback","render","waitUntilVisible","loadSvg","props","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","size","forceResizedSize","scaledSize","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","_this5","_this6","IntersectionObserver","isIntersecting","rootMargin","ROOT_MARGIN","observe","partial","fromEntries","attribute","_this7","getAttribute","scale","Number","tagName","KNOWN_ICON_FILES","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.module.js","sources":["../src/BaseLoader.ts","../src/loaders.ts","../src/ssr.ts","../src/PixivIcon.ts","../src/filenames.ts","../src/index.ts"],"sourcesContent":["export class PixivIconLoadError extends Error {\n constructor(message?: string) {\n super(message)\n Object.setPrototypeOf(this, new.target)\n }\n}\n\n/**\n * SVG アイコンを取得するクラス\n *\n * 一度リクエストされたアイコンは(リクエスト中のも含め)何度もリクエストしないようになっている\n */\nexport class BaseLoader {\n private _name: string\n private _getSource: () => Promise<string>\n\n private _promise: Promise<string> | undefined = undefined\n private _resultSvg: string | undefined = undefined\n\n constructor(name: string, getSource: () => Promise<string>) {\n this._name = name\n this._getSource = getSource\n }\n\n isLoading() {\n return this._promise !== undefined\n }\n\n async fetch() {\n if (this._resultSvg !== undefined) {\n return this._resultSvg\n }\n\n if (this._promise) {\n return this._promise\n }\n\n this._promise = this._getSource()\n .then((src) => fetch(src))\n .then((response) => {\n if (!response.ok) {\n throw new PixivIconLoadError(\n `Failed to fetch <pixiv-icon name=\"${this._name}\">`\n )\n }\n\n return response.text()\n })\n .then((svg) => {\n this._resultSvg = svg\n return this._resultSvg\n })\n .finally(() => {\n this._promise = undefined\n })\n\n return this._promise\n }\n}\n\nexport interface Loadable {\n fetch(): Promise<string>\n isLoading(): boolean\n}\n","import { Loadable, BaseLoader } from './BaseLoader'\n\n/**\n * オブジェクトプール。Loader のインスタンスは作り次第ここに入れる\n *\n * 同じアイコンへの複数回のリクエストが起きないためには、Loader がこの中でユニークでないと行けない\n */\nconst pool = new Map<string, Loadable>()\n\n/**\n * アイコンを特定の URL から取得する Loader\n */\nexport class UrlLoader implements Loadable {\n private fetcher: BaseLoader\n\n static find(name: string) {\n return pool.get(name)\n }\n\n static register(name: string, url: string) {\n const loader = new UrlLoader(name, url)\n\n pool.set(name, loader)\n }\n\n private constructor(name: string, url: string) {\n this.fetcher = new BaseLoader(name, () => Promise.resolve(url))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\n/**\n * アイコン名から import すべきファイル名( このパッケージ内にある )を解決してくる Loader\n */\nexport class FileLoader implements Loadable {\n private fetcher: BaseLoader\n\n static findOrRegister(name: string) {\n const registeredLoader = pool.get(name)\n if (registeredLoader) {\n return registeredLoader\n }\n\n const newLoader = new FileLoader(name)\n pool.set(name, newLoader)\n\n return newLoader\n }\n\n private constructor(name: string) {\n this.fetcher = new BaseLoader(name, () => getSourceFromName(name))\n }\n\n fetch(): Promise<string> {\n return this.fetcher.fetch()\n }\n\n isLoading() {\n return this.fetcher.isLoading()\n }\n}\n\ninterface SvgModule {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __esModule: true\n default: string\n}\n\nasync function getSourceFromName(fullName: string) {\n const [size, name] = fullName.split('/')\n\n const { default: filename } = (await import(\n `../svg/${encodeURIComponent(size)}/${encodeURIComponent(name)}.svg`\n )) as SvgModule\n\n return filename\n}\n","export const __SERVER__ = typeof window === 'undefined'\n\nconst CAN_USE_DOM = typeof HTMLElement !== 'undefined'\n\n// Workaround: `extends HTMLELement` の形式でないとbabelのトランスパイルがおかしくなる\nif (__SERVER__ || !CAN_USE_DOM) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n globalThis.HTMLElement = class {} as any\n}\n","import type React from 'react'\nimport warning from 'warning'\nimport { KnownIconFile } from './filenames'\nimport { FileLoader, UrlLoader } from './loaders'\nimport { __SERVER__ } from './ssr'\nimport { sanitize } from 'dompurify'\n\nconst attributes = ['name', 'scale', 'unsafe-non-guideline-scale'] as const\n\nconst ROOT_MARGIN = 50\n\nexport interface KnownIconType extends Record<KnownIconFile, unknown> {}\n\nexport interface Props\n extends Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>,\n 'className' | 'css'\n > {\n name: keyof KnownIconType\n scale?: 1 | 2 | 3 | '1' | '2' | '3'\n 'unsafe-non-guideline-scale'?: number | string\n\n // CustomElements は className が使えない。class と書く必要がある\n // https://ja.reactjs.org/docs/web-components.html#using-web-components-in-react\n class?: string\n}\n\ntype ExtendedIconFile = Exclude<keyof KnownIconType, KnownIconFile>\ntype Extended = [ExtendedIconFile] extends [never] // NOTE: ExtendedIconFileがneverならKnownIconTypeは拡張されていない\n ? false\n : true\n\nexport class PixivIcon extends HTMLElement {\n static readonly tagName = 'pixiv-icon'\n\n static extend(\n map: Extended extends true\n ? Record<ExtendedIconFile, string>\n : Record<string, string>\n ) {\n warning(!__SERVER__, 'Using `PixivIcon.extend()` on server has no effect')\n if (__SERVER__) {\n return\n }\n\n Object.entries(map).forEach(([name, url]) => {\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n UrlLoader.register(name, url)\n })\n }\n\n static get observedAttributes() {\n return attributes\n }\n\n private svgContent?: string\n private observer?: IntersectionObserver\n private isVisible = false\n\n get props() {\n const partial = Object.fromEntries(\n attributes.map((attribute) => [attribute, this.getAttribute(attribute)])\n ) as Record<typeof attributes[number], string | null>\n\n const name = partial.name\n\n if (name === null) {\n throw new TypeError('property \"name\" is required.')\n }\n\n if (!name.includes('/')) {\n throw new TypeError(\n `${name} is not a valid icon name. \"name\" must be named like [size]/[Name].`\n )\n }\n\n return {\n ...partial,\n name,\n }\n }\n\n get forceResizedSize() {\n if (this.props['unsafe-non-guideline-scale'] === null) {\n return null\n }\n\n const [size] = this.props.name.split('/')\n const scale = Number(this.props['unsafe-non-guideline-scale'])\n\n switch (size) {\n case 'Inline': {\n return 16 * scale\n }\n\n default: {\n return Number(size) * scale\n }\n }\n }\n\n get scaledSize() {\n const [size] = this.props.name.split('/')\n\n const scale = Number(this.props.scale ?? '1')\n\n switch (size) {\n case 'Inline': {\n switch (scale) {\n case 2: {\n return 32\n }\n\n default: {\n return 16\n }\n }\n }\n\n case '24': {\n return Number(size) * scale\n }\n\n default: {\n return Number(size)\n }\n }\n }\n\n constructor() {\n super()\n this.attachShadow({ mode: 'open' })\n }\n\n async connectedCallback() {\n this.render()\n await this.waitUntilVisible()\n this.isVisible = true\n await this.loadSvg(this.props.name)\n }\n\n disconnectedCallback() {\n this.observer?.disconnect()\n this.observer = undefined\n this.isVisible = false\n }\n\n attributeChangedCallback(\n attr: string,\n _oldValue: string | null,\n newValue: string\n ) {\n // 非表示の場合はロードしない\n if (!this.isVisible) {\n return\n }\n\n // name が変更された場合必ず再読み込みを試みる\n if (attr === 'name') {\n void this.loadSvg(newValue)\n return\n }\n\n // SVG が読み込み済み && scale などの変更だけならそこだけ反映すればいい\n if (this.svgContent !== undefined) {\n this.render()\n return\n }\n\n // まだ SVG が読み込めてないなら load\n void this.loadSvg(this.props.name)\n }\n\n render() {\n const size = this.forceResizedSize ?? this.scaledSize\n\n const style = sanitize(\n `<style>\n :host {\n display: inline-flex;\n --size: ${size}px;\n }\n\n svg {\n width: var(--size);\n height: var(--size);\n }\n</style>`,\n { ALLOWED_TAGS: ['style'], FORCE_BODY: true }\n )\n\n const svg = sanitize(\n this.svgContent !== undefined\n ? this.svgContent\n : `<svg viewBox=\"0 0 ${size} ${size}\"></svg>`,\n { USE_PROFILES: { svg: true, svgFilters: true } }\n )\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowRoot!.innerHTML = style + svg\n }\n\n private async loadSvg(name: string) {\n const loader = UrlLoader.find(name) ?? FileLoader.findOrRegister(name)\n\n this.svgContent = await loader.fetch()\n this.render()\n }\n\n private waitUntilVisible() {\n return new Promise<void>((resolve) => {\n this.observer = new IntersectionObserver(\n ([first]) => {\n if (first.isIntersecting) {\n this.observer?.disconnect()\n this.observer = undefined\n resolve()\n }\n },\n { rootMargin: `${ROOT_MARGIN}px` }\n )\n\n this.observer.observe(this)\n })\n }\n}\n","/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport const KNOWN_ICON_FILES = [\"32/ShareIos\",\"32/Dot\",\"32/Message\",\"32/Gift\",\"32/Close\",\"32/Prev\",\"32/Next\",\"32/PullDown\",\"32/PullUp\",\"32/Expand\",\"32/Collapse\",\"32/Edit\",\"32/ShareAndroid\",\"32/BookmarkOff\",\"32/BookmarkOn\",\"32/NovelViewerSettings\",\"32/CommentOff\",\"32/CommentOn\",\"32/Home\",\"32/Index\",\"32/Serif\",\"32/Camera\",\"32/Delete\",\"32/Pan\",\"32/RollVertical\",\"32/RollHorizontal\",\"32/ZoomIn\",\"32/Upload\",\"32/Shopping\",\"32/User\",\"32/HorizontalWriting\",\"32/Notification\",\"32/SansSerif\",\"32/VerticalWriting\",\"32/NotificationOff\",\"24/Expand\",\"24/Collapse\",\"24/Close\",\"24/Pencil\",\"24/PencilDraw\",\"24/PencilText\",\"24/Reorder\",\"24/Add\",\"24/Subtract\",\"24/Star\",\"24/Check\",\"24/Send\",\"24/LockLock\",\"24/LockUnlock\",\"24/Up\",\"24/Down\",\"24/ReloadLoop\",\"24/Reload\",\"24/Options\",\"24/CommentOutline\",\"24/Trash\",\"24/TrashAlt\",\"24/ShareIos\",\"24/ViewGrid3Columns\",\"24/ViewGrid2Columns\",\"24/ViewList\",\"24/Upload\",\"24/UploadAlt\",\"24/DownloadAlt\",\"24/ArrowUp\",\"24/LikeOff\",\"24/LikeOn\",\"24/ArrowDown\",\"24/OptionsAlt\",\"24/PencilLive\",\"24/OpenInNew\",\"24/Settings\",\"24/Roll\",\"24/Calendar\",\"24/Save\",\"24/Logout\",\"24/CommentFill\",\"24/ShareAndroid\",\"16/More\",\"16/Back\",\"16/Search\",\"16/Add\",\"16/Check\",\"16/Menu\",\"16/Dot\",\"16/Book\",\"16/ArrowDown\",\"16/Speaker\",\"16/Remove\",\"16/BookmarkOn\",\"16/BookmarkOff\",\"16/Filter\",\"16/Error\",\"16/Info\",\"16/Pencil\",\"Inline/LikeOff\",\"Inline/View\",\"Inline/BookmarkOff\",\"Inline/BookmarkOn\",\"Inline/Breadcrumbs\",\"Inline/More\",\"Inline/ImageResponse\",\"Inline/Lock\",\"Inline/External\",\"Inline/Location\",\"Inline/ViewOutline\",\"Inline/Like\",\"Inline/Smile\",\"Inline/SmileOn\",\"Inline/Check\",\"Inline/List\",\"Inline/ContextMenu\",\"Inline/Add\",\"Inline/Remove\",\"Inline/Images\",\"Inline/Nextworks\",\"Inline/Filter\",\"Inline/Users\",\"24/Next\",\"24/PullDown\",\"24/PullUp\",\"24/Prev\",\"24/Dot\",\"24/Notification\",\"24/NotificationOff\",\"24/Search\",\"24/Menu\",\"24/Index\",\"24/Services\",\"24/Error\",\"24/Home\",\"24/Warning\",\"24/Info\",\"24/QuestionOutline\",\"24/ChatBot\",\"24/ErrorOctagon\",\"24/Question\",\"24/Alart\",\"24/DotAlt\",\"24/ImageHidden\",\"24/AddRubi\",\"24/ImageReplace\",\"24/Text\",\"24/AddText\",\"24/FormatAlignRight\",\"24/FormatAlignLeft\",\"24/FormatAlignCenter\",\"24/AddImage\",\"24/ImgContain\",\"24/ImgCover\",\"24/BringForward\",\"24/BringBackward\",\"24/RotateRight\",\"24/Palette\",\"24/Duplicate\",\"24/FormatLineSpacing\",\"24/FormatLetterSpacing\",\"24/Rotate90DegreesCc\",\"24/Rotate90DegreesC\",\"24/FormatFontSize\",\"24/FormatFontFamily\",\"24/FormatColorFill\",\"24/FormatColorFillNoColor\",\"24/ChromaticAberration\",\"24/Move1\",\"24/Play\",\"24/Pause\",\"24/Microphone\",\"24/PauseAlt\",\"24/CameraVideo\",\"24/Camera\",\"24/Fov\",\"24/Sun\",\"24/Shutter\",\"24/Contrast\",\"24/FrameEffect\",\"24/Hue\",\"24/Saturation\",\"24/Glow\",\"24/Binet\",\"24/Overlay\",\"24/Flare\",\"24/Dust\",\"24/Temperature\",\"24/Filter\",\"24/Usagi\",\"24/Set\",\"24/Gift\",\"24/MobilePhone\",\"24/Users\",\"24/AddPeople\",\"24/Person\",\"24/Emoji\",\"24/Shopping\",\"24/UsagiAlt\",\"24/Fashion\",\"24/FaceEdit\",\"24/DeviceRotation\",\"24/Ar\",\"24/FrameSize\",\"24/Body\",\"24/BodyEdit\",\"24/HairEdit\",\"24/ItemRemove\",\"24/AddModel\",\"24/ChangeCharactor\",\"24/Pose\",\"24/Show\",\"24/ShowOutline\",\"24/Hide\",\"24/Idea\",\"24/Book\",\"24/Message\",\"24/Images\",\"24/Image\",\"24/Video\",\"24/Hashtag\",\"24/ImageAlt\",\"24/Discovery\",\"24/Description\",\"24/File\",\"24/Archive\",\"24/Invoice\",\"24/Announcement\",\"24/Link\",\"24/Manga\",\"24/Novels\",\"24/Contest\",\"24/LatestWorks\",\"24/Ranking\",\"24/Feed\",\"24/Groups\",\"24/Events\",\"24/Projects\",\"24/Codes\",\"24/Invalid\",\"32/LikeOff\",\"32/LikeOn\",\"32/LikeOnPrivate\",\"24/ImageHidden\",\"Inline/Folder\",\"Inline/Pencil\",\"Inline/Comment\",\"16/View\",\"16/ImageResponse\",\"16/Like\",\"16/Smile\",\"16/Comment\",\"16/Ranking\",\"16/Artwork\",\"24/NoImage\",\"24/ReadVertical\",\"24/ReadHorizontalLeft\",\"24/ReadHorizontalRight\"] as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n","import { PixivIcon, Props } from './PixivIcon'\nimport { __SERVER__ } from './ssr'\nexport { PixivIcon, type KnownIconType, type Props } from './PixivIcon'\nexport { KNOWN_ICON_FILES } from './filenames'\nexport { PixivIconLoadError } from './BaseLoader'\n\ndeclare global {\n interface Window {\n PixivIcon: typeof PixivIcon\n }\n\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n interface IntrinsicElements {\n 'pixiv-icon': Props\n }\n }\n}\n\nif (!__SERVER__) {\n // TODO: HMR対応\n if (!window.customElements.get(PixivIcon.tagName)) {\n window.PixivIcon = PixivIcon\n window.customElements.define(PixivIcon.tagName, PixivIcon)\n }\n}\n"],"names":["PixivIconLoadError","message","_this","Object","setPrototypeOf","Error","BaseLoader","name","getSource","_name","_getSource","_promise","undefined","_resultSvg","this","isLoading","fetch","_this3","then","src","response","ok","text","svg","pool","Map","UrlLoader","url","fetcher","Promise","resolve","find","get","register","loader","set","FileLoader","fullName","split","import","encodeURIComponent","getSourceFromName","findOrRegister","registeredLoader","newLoader","__SERVER__","window","CAN_USE_DOM","HTMLElement","globalThis","attributes","PixivIcon","svgContent","observer","isVisible","attachShadow","mode","extend","map","warning","entries","forEach","includes","TypeError","connectedCallback","render","waitUntilVisible","loadSvg","props","disconnectedCallback","disconnect","attributeChangedCallback","attr","_oldValue","newValue","size","forceResizedSize","scaledSize","style","sanitize","ALLOWED_TAGS","FORCE_BODY","USE_PROFILES","svgFilters","shadowRoot","innerHTML","_this5","_this6","IntersectionObserver","isIntersecting","rootMargin","ROOT_MARGIN","observe","partial","fromEntries","attribute","_this7","getAttribute","scale","Number","tagName","KNOWN_ICON_FILES","customElements","define"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@charcoal-ui/icons",
|
|
3
|
-
"version": "1.1.0-alpha.
|
|
3
|
+
"version": "1.1.0-alpha.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"url": "https://github.com/pixiv/charcoal.git",
|
|
46
46
|
"directory": "packages/icons"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "34ed6deeda980c3fad662b9b0ccd8ef17a994c71"
|
|
49
49
|
}
|
package/src/filenames.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** This file is auto generated. DO NOT EDIT BY HAND. */
|
|
2
2
|
|
|
3
|
-
export const KNOWN_ICON_FILES = ["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/
|
|
3
|
+
export const KNOWN_ICON_FILES = ["32/ShareIos","32/Dot","32/Message","32/Gift","32/Close","32/Prev","32/Next","32/PullDown","32/PullUp","32/Expand","32/Collapse","32/Edit","32/ShareAndroid","32/BookmarkOff","32/BookmarkOn","32/NovelViewerSettings","32/CommentOff","32/CommentOn","32/Home","32/Index","32/Serif","32/Camera","32/Delete","32/Pan","32/RollVertical","32/RollHorizontal","32/ZoomIn","32/Upload","32/Shopping","32/User","32/HorizontalWriting","32/Notification","32/SansSerif","32/VerticalWriting","32/NotificationOff","24/Expand","24/Collapse","24/Close","24/Pencil","24/PencilDraw","24/PencilText","24/Reorder","24/Add","24/Subtract","24/Star","24/Check","24/Send","24/LockLock","24/LockUnlock","24/Up","24/Down","24/ReloadLoop","24/Reload","24/Options","24/CommentOutline","24/Trash","24/TrashAlt","24/ShareIos","24/ViewGrid3Columns","24/ViewGrid2Columns","24/ViewList","24/Upload","24/UploadAlt","24/DownloadAlt","24/ArrowUp","24/LikeOff","24/LikeOn","24/ArrowDown","24/OptionsAlt","24/PencilLive","24/OpenInNew","24/Settings","24/Roll","24/Calendar","24/Save","24/Logout","24/CommentFill","24/ShareAndroid","16/More","16/Back","16/Search","16/Add","16/Check","16/Menu","16/Dot","16/Book","16/ArrowDown","16/Speaker","16/Remove","16/BookmarkOn","16/BookmarkOff","16/Filter","16/Error","16/Info","16/Pencil","Inline/LikeOff","Inline/View","Inline/BookmarkOff","Inline/BookmarkOn","Inline/Breadcrumbs","Inline/More","Inline/ImageResponse","Inline/Lock","Inline/External","Inline/Location","Inline/ViewOutline","Inline/Like","Inline/Smile","Inline/SmileOn","Inline/Check","Inline/List","Inline/ContextMenu","Inline/Add","Inline/Remove","Inline/Images","Inline/Nextworks","Inline/Filter","Inline/Users","24/Next","24/PullDown","24/PullUp","24/Prev","24/Dot","24/Notification","24/NotificationOff","24/Search","24/Menu","24/Index","24/Services","24/Error","24/Home","24/Warning","24/Info","24/QuestionOutline","24/ChatBot","24/ErrorOctagon","24/Question","24/Alart","24/DotAlt","24/ImageHidden","24/AddRubi","24/ImageReplace","24/Text","24/AddText","24/FormatAlignRight","24/FormatAlignLeft","24/FormatAlignCenter","24/AddImage","24/ImgContain","24/ImgCover","24/BringForward","24/BringBackward","24/RotateRight","24/Palette","24/Duplicate","24/FormatLineSpacing","24/FormatLetterSpacing","24/Rotate90DegreesCc","24/Rotate90DegreesC","24/FormatFontSize","24/FormatFontFamily","24/FormatColorFill","24/FormatColorFillNoColor","24/ChromaticAberration","24/Move1","24/Play","24/Pause","24/Microphone","24/PauseAlt","24/CameraVideo","24/Camera","24/Fov","24/Sun","24/Shutter","24/Contrast","24/FrameEffect","24/Hue","24/Saturation","24/Glow","24/Binet","24/Overlay","24/Flare","24/Dust","24/Temperature","24/Filter","24/Usagi","24/Set","24/Gift","24/MobilePhone","24/Users","24/AddPeople","24/Person","24/Emoji","24/Shopping","24/UsagiAlt","24/Fashion","24/FaceEdit","24/DeviceRotation","24/Ar","24/FrameSize","24/Body","24/BodyEdit","24/HairEdit","24/ItemRemove","24/AddModel","24/ChangeCharactor","24/Pose","24/Show","24/ShowOutline","24/Hide","24/Idea","24/Book","24/Message","24/Images","24/Image","24/Video","24/Hashtag","24/ImageAlt","24/Discovery","24/Description","24/File","24/Archive","24/Invoice","24/Announcement","24/Link","24/Manga","24/Novels","24/Contest","24/LatestWorks","24/Ranking","24/Feed","24/Groups","24/Events","24/Projects","24/Codes","24/Invalid","32/LikeOff","32/LikeOn","32/LikeOnPrivate","24/ImageHidden","Inline/Folder","Inline/Pencil","Inline/Comment","16/View","16/ImageResponse","16/Like","16/Smile","16/Comment","16/Ranking","16/Artwork","24/NoImage","24/ReadVertical","24/ReadHorizontalLeft","24/ReadHorizontalRight"] as const;
|
|
4
4
|
|
|
5
5
|
export type KnownIconFile = typeof KNOWN_ICON_FILES[number];
|