@robosophy/ui-vue 1.0.3 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +23 -19
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.rs-icon{--rs-icon-color: currentColor;--rs-icon-fill: 0;--rs-icon-grade: 0;--rs-icon-optical-size: 24;--rs-icon-size: 24px;--rs-icon-weight: 400;align-items:center;color:var(--rs-icon-color);display:inline-flex;flex:0 0 auto;font-family:Material Symbols Outlined Variable;font-size:var(--rs-icon-size);font-style:normal;font-variation-settings:"FILL" var(--rs-icon-fill),"wght" var(--rs-icon-weight),"GRAD" var(--rs-icon-grade),"opsz" var(--rs-icon-optical-size);font-weight:400;justify-content:center;letter-spacing:normal;line-height:1;text-transform:none;-webkit-user-select:none;user-select:none;white-space:nowrap;word-wrap:normal}.rs-icon--sm{--rs-icon-optical-size: 20;--rs-icon-size: 18px}.rs-icon--md{--rs-icon-optical-size: 24;--rs-icon-size: 24px}.rs-icon--lg{--rs-icon-optical-size: 40;--rs-icon-size: 32px}.rs-icon--primary{--rs-icon-color: var(--rs-color-icon-primary, #48a0d4)}.rs-icon--secondary{--rs-icon-color: var(--rs-color-icon-secondary, #000000)}.rs-icon--danger{--rs-icon-color: var(--rs-color-icon-brand-red, #d80115)}.rs-icon--inherit{--rs-icon-color: currentColor}.rs-icon--rounded{font-family:Material Symbols Rounded Variable}.rs-icon--sharp{font-family:Material Symbols Sharp Variable}.rs-icon--interactive{cursor:pointer}.rs-account-selector-host{--rs-account-selector-width: 270px;--rs-account-selector-background: var(--rs-color-surface-primary, #ffffff);--rs-account-selector-border: var(--rs-color-stroke-default, #d1d1d1);--rs-account-selector-color: var(--rs-color-text-primary, #000000);--rs-account-selector-muted: var(--rs-color-text-secondary, #909090);--rs-account-selector-active: var(--rs-color-text-brand-green, #4eae01);--rs-account-selector-danger: var(--rs-color-text-brand-red, #d80115);display:inline-flex;position:relative}.rs-account-selector__trigger.p-button{align-items:center;background:transparent;border:0;color:var(--rs-account-selector-color);display:inline-flex;flex:0 0 auto;gap:16px;min-width:0;padding:0}.rs-account-selector__trigger.p-button .p-button-label{align-items:center;display:inline-flex;gap:20px}.rs-account-selector__trigger.p-button:hover,.rs-account-selector__trigger.p-button:focus-visible{background:transparent!important;border:0!important;color:var(--rs-account-selector-color);gap:16px!important;padding:0!important}.rs-account-selector__trigger-chevron{transition:transform .16s ease}.rs-account-selector__trigger--open .rs-account-selector__trigger-chevron{transform:rotate(180deg)}.rs-account-selector__trigger-avatar{--rs-account-selector-avatar-size: 46px;align-items:center;background:var(--rs-color-background-info, #e6f6fb);border-radius:999px;color:var(--rs-color-text-brand, #48a0d4);display:inline-flex;flex:0 0 auto;font-size:.875rem;font-weight:600;height:var(--rs-account-selector-avatar-size);justify-content:center;line-height:1;overflow:hidden;text-transform:uppercase;width:var(--rs-account-selector-avatar-size)}.rs-account-selector{background:var(--rs-account-selector-background);border:1px solid var(--rs-account-selector-border);border-radius:8px;box-sizing:border-box;color:var(--rs-account-selector-color);display:flex;flex-direction:column;font-family:var(--rs-font-family, "Inter", sans-serif);font-size:16px;gap:16px;position:absolute;top:calc(100% + 8px);z-index:20;padding:20px 0 16px;max-width:calc(100vw - 32px);width:var(--rs-account-selector-width)}.rs-account-selector--align-left{left:0}.rs-account-selector--align-right{right:0}.rs-account-selector__summary{align-items:center;display:flex;flex-direction:column;gap:8px;padding:0 16px;text-align:center}.rs-account-selector__avatar-stack{align-items:center;display:inline-flex}.rs-account-selector__avatar{--rs-account-selector-avatar-size: 44px;align-items:center;background:var(--rs-color-background-info, #e6f6fb);border:2px solid var(--rs-color-surface-primary, #ffffff);border-radius:999px;box-sizing:border-box;color:var(--rs-color-text-brand, #48a0d4);display:inline-flex;flex:0 0 auto;font-size:.875rem;font-weight:600;height:var(--rs-account-selector-avatar-size);justify-content:center;line-height:1;overflow:hidden;text-transform:uppercase;width:var(--rs-account-selector-avatar-size)}.rs-account-selector__avatar--sm{--rs-account-selector-avatar-size: 35px;font-size:.75rem}.rs-account-selector__avatar--lg{--rs-account-selector-avatar-size: 64px;font-size:1.125rem}.rs-account-selector__avatar-image{display:block;height:100%;object-fit:cover;width:100%}.rs-account-selector__avatar-placeholder{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.rs-account-selector__secondary-avatar{margin-left:-20px}.rs-account-selector__user{display:grid;gap:2px;max-width:100%;min-width:0;width:100%}.rs-account-selector__title,.rs-account-selector__name,.rs-account-selector__email,.rs-account-selector__account-label,.rs-account-selector__account-state,.rs-account-selector__state{margin:0}.rs-account-selector__title{font-weight:600;line-height:1.35}.rs-account-selector__name{font-size:.875rem;font-weight:500;line-height:1.35}.rs-account-selector__email{color:var(--rs-account-selector-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rs-account-selector__actions,.rs-account-selector__footer{align-items:center;display:flex;flex-direction:column;gap:8px;padding:0 16px}.rs-account-selector__button{width:max-content}.rs-account-selector__button-content{align-items:center;display:inline-flex;gap:8px}.rs-account-selector__accounts{display:grid}.rs-account-selector__account.p-button{align-items:center;background:transparent;border:0;border-top:1px solid var(--rs-account-selector-border);box-sizing:border-box;color:inherit;cursor:pointer;display:grid;font:inherit;gap:8px;grid-template-columns:auto minmax(0,1fr) auto;min-height:58px;padding:8px 16px;text-align:left;width:100%}.rs-account-selector__account.p-button .p-button-label{display:contents}.rs-account-selector__account.p-button:last-child{border-bottom:1px solid var(--rs-account-selector-border)}.rs-account-selector__account.p-button:hover:not(:disabled){background:var(--rs-color-background-info, #e6f6fb)!important;color:inherit}.rs-account-selector__account.p-button:disabled{cursor:default;opacity:1}.rs-account-selector__account--active .rs-account-selector__account-label{font-weight:600}.rs-account-selector__account--active .rs-account-selector__account-avatar{outline:2px solid var(--rs-account-selector-active);outline-offset:2px}.rs-account-selector__account--active .rs-account-selector__account-trailing{opacity:.25}.rs-account-selector__account-info{display:grid;gap:2px;min-width:0}.rs-account-selector__account-label{line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rs-account-selector__account-state,.rs-account-selector__state{color:var(--rs-account-selector-muted);font-size:.8125rem;line-height:1.35}.rs-account-selector__account-state--active{color:var(--rs-account-selector-active)}.rs-account-selector__account-state--inactive{color:var(--rs-account-selector-muted)}.rs-account-selector__account-trailing{align-items:center;color:var(--rs-color-icon-secondary, #000000);display:inline-flex;justify-content:center}.rs-account-selector__state{padding:8px 16px;text-align:center}@media(max-width:768px){.rs-account-selector{width:min(100vw - 32px,var(--rs-account-selector-width))}}.rs-sidebar{--rs-sidebar-background: var(--rs-color-surface-primary, #ffffff);--rs-sidebar-border: var(--rs-color-stroke-default, #d1d1d1);--rs-sidebar-color: var(--rs-color-text-primary, #000000);--rs-sidebar-muted: var(--rs-color-text-secondary, #909090);--rs-sidebar-active: var(--rs-color-text-button-tertiary, #48a0d4);--rs-sidebar-hover: var(--rs-color-button-blue-surface, #e6f6fb);--rs-sidebar-width-collapsed: 72px;--rs-sidebar-width-expanded: 286px;background:var(--rs-sidebar-background);border-right:1px solid var(--rs-sidebar-border);box-sizing:border-box;color:var(--rs-sidebar-color);display:flex;flex-direction:column;flex-shrink:0;font-family:var(--rs-font-family, "Inter", sans-serif);font-size:10px;gap:32px;height:100%;overflow:hidden;transition:width .18s ease-in-out;width:var(--rs-sidebar-width-collapsed)}.rs-sidebar--pc{--rs-sidebar-active: var(--rs-color-icon-project-pc, #014a9f);--rs-sidebar-hover: var(--rs-color-darkblue-100, #e5ecf5)}.rs-sidebar--alta{--rs-sidebar-active: var(--rs-color-icon-project-alta, #65ac1e);--rs-sidebar-hover: var(--rs-color-green-100, #edf7e6)}.rs-sidebar--cc{--rs-sidebar-active: var(--rs-color-icon-project-cc, #49a0d4);--rs-sidebar-hover: var(--rs-color-blue-100, #e6f6fb)}.rs-sidebar--pog{--rs-sidebar-active: var(--rs-color-icon-project-pog, #007c2f);--rs-sidebar-hover: var(--rs-color-navygreen-100, #e5f1ea)}.rs-sidebar--cyo{--rs-sidebar-active: var(--rs-color-icon-project-cyo, #49a0d4);--rs-sidebar-hover: var(--rs-color-blue-100, #e6f6fb)}.rs-sidebar--expanded,.rs-sidebar--mobile-open{overflow:visible;width:var(--rs-sidebar-width-expanded)}.rs-sidebar__header{align-items:center;position:relative;box-sizing:border-box;display:flex;gap:6px;justify-content:space-between;min-height:48px;padding:16px 12px 16px 16px}.rs-sidebar__brand{align-items:center;display:flex;color:var(--rs-sidebar-active);gap:6px;min-width:0;width:max-content}.rs-sidebar__brand--trigger{flex:1}.rs-sidebar__module-trigger{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:inline-flex;justify-content:flex-start;font:inherit;gap:6px;min-width:0;appearance:none;-webkit-appearance:none;padding:0;text-align:left;width:100%}.rs-sidebar__module-trigger:hover:not(:disabled),.rs-sidebar__module-trigger:active:not(:disabled){background:transparent;color:inherit}.rs-sidebar__module-trigger:focus-visible{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:2px}.rs-sidebar__module-chevron{margin-left:auto}.rs-sidebar__title,.rs-sidebar__item-label,.rs-sidebar__item-chevron{max-width:0;opacity:0;overflow:hidden;transition:max-width .18s ease-in-out,opacity .18s ease-in-out;white-space:nowrap}.rs-sidebar--expanded .rs-sidebar__title,.rs-sidebar--expanded .rs-sidebar__item-label,.rs-sidebar--expanded .rs-sidebar__item-chevron,.rs-sidebar--mobile-open .rs-sidebar__title,.rs-sidebar--mobile-open .rs-sidebar__item-label,.rs-sidebar--mobile-open .rs-sidebar__item-chevron{max-width:220px;opacity:1}.rs-sidebar__title{color:var(--rs-sidebar-color);font-size:.625rem;font-weight:400;line-height:1.2;text-overflow:ellipsis}.rs-sidebar__module-menu.p-menu{background:var(--rs-sidebar-background);border:1px solid var(--rs-sidebar-border);border-radius:4px;box-shadow:0 8px 24px #0000002e;left:16px;min-width:calc(var(--rs-sidebar-width-expanded) - 32px);overflow:hidden;padding:0;position:absolute;top:52px;z-index:20}.rs-sidebar__module-menu .p-menu-list{gap:0;padding:0}.rs-sidebar__module-option .p-menu-item-content{color:var(--rs-sidebar-color);border-radius:0}.rs-sidebar__module-option .p-menu-item-link{font-family:inherit;font-size:.625rem;line-height:1.2;min-height:38px;padding:10px 14px}.rs-sidebar__module-option:not(.p-disabled) .p-menu-item-content:hover,.rs-sidebar__module-option--active .p-menu-item-content{background:var(--rs-sidebar-hover);color:var(--rs-sidebar-color)}.rs-sidebar__module-option--disabled .p-menu-item-content{color:var(--rs-sidebar-muted);cursor:not-allowed}.rs-sidebar__module-option--disabled .p-menu-item-content:hover{background:transparent}.rs-sidebar__module-option.p-focus .p-menu-item-content{background:var(--rs-sidebar-hover);color:var(--rs-sidebar-color)}.rs-sidebar__module-option.p-focus .p-menu-item-link{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:-2px}.rs-sidebar__header-button{align-items:center;background:transparent;border:0;border-radius:999px;color:var(--rs-color-icon-secondary, #000000);cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;appearance:none;-webkit-appearance:none;min-height:24px;min-width:24px;padding:2px}.rs-sidebar__header-button:hover:not(:disabled),.rs-sidebar__header-button:active:not(:disabled){background:var(--rs-sidebar-hover)!important;color:var(--rs-color-icon-secondary, #000000)}.rs-sidebar__header-button:focus-visible,.rs-sidebar__item:focus-visible{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:-2px}.rs-sidebar__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:0}.rs-sidebar__nav{min-height:0}.rs-sidebar__list{list-style:none;margin:0;padding:0}.rs-sidebar__item{align-items:center;background:transparent;border:0;border-right:3px solid transparent;box-sizing:border-box;color:var(--rs-sidebar-active);cursor:pointer;display:flex;justify-content:flex-start;font:inherit;font-weight:300;gap:8px;appearance:none;-webkit-appearance:none;min-height:27px;padding:7px 8px 7px 16px;text-align:left;width:100%}.rs-sidebar__item:hover:not(:disabled),.rs-sidebar__item:active:not(:disabled){background:var(--rs-sidebar-hover)!important;color:var(--rs-sidebar-active)}.rs-sidebar__item:disabled{color:var(--rs-sidebar-muted);cursor:not-allowed;opacity:1}.rs-sidebar__item--active{background:var(--rs-sidebar-hover)!important;border-right-color:var(--rs-sidebar-active)}.rs-sidebar__item--footer{color:var(--rs-sidebar-color);min-height:40px;padding-bottom:16px;padding-left:16px;padding-top:16px}.rs-sidebar__item-icon{flex:0 0 auto;color:var(--rs-sidebar-active)}.rs-sidebar__item-label{color:var(--rs-sidebar-color);min-width:0;text-overflow:ellipsis}.rs-sidebar__item-chevron{margin-left:auto}.rs-sidebar__footer{margin-top:auto}.rs-sidebar--mobile-open{border-right:0;gap:clamp(8px,4vh,52px);inset:0;position:fixed;width:100%;z-index:10000}.rs-sidebar--mobile-open .rs-sidebar__header{min-height:80px}.rs-sidebar--mobile-open .rs-sidebar__module-menu{left:16px;min-width:min(320px,calc(100% - 32px));top:88px}.rs-sidebar--mobile-open .rs-sidebar__item{font-size:1rem;min-height:64px;padding-bottom:20px;padding-top:20px}
|
|
1
|
+
.rs-icon{--rs-icon-color: currentColor;--rs-icon-fill: 0;--rs-icon-grade: 0;--rs-icon-optical-size: 24;--rs-icon-size: 24px;--rs-icon-weight: 400;align-items:center;color:var(--rs-icon-color);display:inline-flex;flex:0 0 auto;font-family:Material Symbols Outlined Variable;font-size:var(--rs-icon-size);font-style:normal;font-feature-settings:"liga";font-variation-settings:"FILL" var(--rs-icon-fill),"wght" var(--rs-icon-weight),"GRAD" var(--rs-icon-grade),"opsz" var(--rs-icon-optical-size);font-weight:400;-webkit-font-feature-settings:"liga";justify-content:center;direction:ltr;letter-spacing:normal;line-height:1;text-transform:none;-webkit-user-select:none;user-select:none;white-space:nowrap;word-wrap:normal}.rs-icon--sm{--rs-icon-optical-size: 20;--rs-icon-size: 18px}.rs-icon--md{--rs-icon-optical-size: 24;--rs-icon-size: 24px}.rs-icon--lg{--rs-icon-optical-size: 40;--rs-icon-size: 32px}.rs-icon--primary{--rs-icon-color: var(--rs-color-icon-primary, #48a0d4)}.rs-icon--secondary{--rs-icon-color: var(--rs-color-icon-secondary, #000000)}.rs-icon--danger{--rs-icon-color: var(--rs-color-icon-brand-red, #d80115)}.rs-icon--inherit{--rs-icon-color: currentColor}.rs-icon--rounded{font-family:Material Symbols Rounded Variable}.rs-icon--sharp{font-family:Material Symbols Sharp Variable}.rs-icon--interactive{cursor:pointer}.rs-account-selector-host{--rs-account-selector-width: 270px;--rs-account-selector-background: var(--rs-color-surface-primary, #ffffff);--rs-account-selector-border: var(--rs-color-stroke-default, #d1d1d1);--rs-account-selector-color: var(--rs-color-text-primary, #000000);--rs-account-selector-muted: var(--rs-color-text-secondary, #909090);--rs-account-selector-active: var(--rs-color-text-brand-green, #4eae01);--rs-account-selector-danger: var(--rs-color-text-brand-red, #d80115);display:inline-flex;position:relative}.rs-account-selector__trigger.p-button{align-items:center;background:transparent;border:0;color:var(--rs-account-selector-color);display:inline-flex;flex:0 0 auto;gap:16px;min-width:0;padding:0}.rs-account-selector__trigger.p-button .p-button-label{align-items:center;display:inline-flex;gap:20px}.rs-account-selector__trigger.p-button:hover,.rs-account-selector__trigger.p-button:focus-visible{background:transparent!important;border:0!important;color:var(--rs-account-selector-color);gap:16px!important;padding:0!important}.rs-account-selector__trigger-chevron{transition:transform .16s ease}.rs-account-selector__trigger--open .rs-account-selector__trigger-chevron{transform:rotate(180deg)}.rs-account-selector__trigger-avatar{--rs-account-selector-avatar-size: 46px;align-items:center;background:var(--rs-color-background-info, #e6f6fb);border-radius:999px;color:var(--rs-color-text-brand, #48a0d4);display:inline-flex;flex:0 0 auto;font-size:.875rem;font-weight:600;height:var(--rs-account-selector-avatar-size);justify-content:center;line-height:1;overflow:hidden;text-transform:uppercase;width:var(--rs-account-selector-avatar-size)}.rs-account-selector{background:var(--rs-account-selector-background);border:1px solid var(--rs-account-selector-border);border-radius:8px;box-sizing:border-box;color:var(--rs-account-selector-color);display:flex;flex-direction:column;font-family:var(--rs-font-family, "Inter", sans-serif);font-size:16px;gap:16px;position:absolute;top:calc(100% + 8px);z-index:20;padding:20px 0 16px;max-width:calc(100vw - 32px);width:var(--rs-account-selector-width)}.rs-account-selector--align-left{left:0}.rs-account-selector--align-right{right:0}.rs-account-selector__summary{align-items:center;display:flex;flex-direction:column;gap:8px;padding:0 16px;text-align:center}.rs-account-selector__avatar-stack{align-items:center;display:inline-flex}.rs-account-selector__avatar{--rs-account-selector-avatar-size: 44px;align-items:center;background:var(--rs-color-background-info, #e6f6fb);border:2px solid var(--rs-color-surface-primary, #ffffff);border-radius:999px;box-sizing:border-box;color:var(--rs-color-text-brand, #48a0d4);display:inline-flex;flex:0 0 auto;font-size:.875rem;font-weight:600;height:var(--rs-account-selector-avatar-size);justify-content:center;line-height:1;overflow:hidden;text-transform:uppercase;width:var(--rs-account-selector-avatar-size)}.rs-account-selector__avatar--sm{--rs-account-selector-avatar-size: 35px;font-size:.75rem}.rs-account-selector__avatar--lg{--rs-account-selector-avatar-size: 64px;font-size:1.125rem}.rs-account-selector__avatar-image{display:block;height:100%;object-fit:cover;width:100%}.rs-account-selector__avatar-placeholder{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.rs-account-selector__secondary-avatar{margin-left:-20px}.rs-account-selector__user{display:grid;gap:2px;max-width:100%;min-width:0;width:100%}.rs-account-selector__title,.rs-account-selector__name,.rs-account-selector__email,.rs-account-selector__account-label,.rs-account-selector__account-state,.rs-account-selector__state{margin:0}.rs-account-selector__title{font-weight:600;line-height:1.35}.rs-account-selector__name{font-size:.875rem;font-weight:500;line-height:1.35}.rs-account-selector__email{color:var(--rs-account-selector-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rs-account-selector__actions,.rs-account-selector__footer{align-items:center;display:flex;flex-direction:column;gap:8px;padding:0 16px}.rs-account-selector__button{width:max-content}.rs-account-selector__button-content{align-items:center;display:inline-flex;gap:8px}.rs-account-selector__accounts{display:grid}.rs-account-selector__account.p-button{align-items:center;background:transparent;border:0;border-top:1px solid var(--rs-account-selector-border);box-sizing:border-box;color:inherit;cursor:pointer;display:grid;font:inherit;gap:8px;grid-template-columns:auto minmax(0,1fr) auto;min-height:58px;padding:8px 16px;text-align:left;width:100%}.rs-account-selector__account.p-button .p-button-label{display:contents}.rs-account-selector__account.p-button:last-child{border-bottom:1px solid var(--rs-account-selector-border)}.rs-account-selector__account.p-button:hover:not(:disabled){background:var(--rs-color-background-info, #e6f6fb)!important;color:inherit}.rs-account-selector__account.p-button:disabled{cursor:default;opacity:1}.rs-account-selector__account--active .rs-account-selector__account-label{font-weight:600}.rs-account-selector__account--active .rs-account-selector__account-avatar{outline:2px solid var(--rs-account-selector-active);outline-offset:2px}.rs-account-selector__account--active .rs-account-selector__account-trailing{opacity:.25}.rs-account-selector__account-info{display:grid;gap:2px;min-width:0}.rs-account-selector__account-label{line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rs-account-selector__account-state,.rs-account-selector__state{color:var(--rs-account-selector-muted);font-size:.8125rem;line-height:1.35}.rs-account-selector__account-state--active{color:var(--rs-account-selector-active)}.rs-account-selector__account-state--inactive{color:var(--rs-account-selector-muted)}.rs-account-selector__account-trailing{align-items:center;color:var(--rs-color-icon-secondary, #000000);display:inline-flex;justify-content:center}.rs-account-selector__state{padding:8px 16px;text-align:center}@media(max-width:768px){.rs-account-selector{width:min(100vw - 32px,var(--rs-account-selector-width))}}.rs-sidebar{--rs-sidebar-background: var(--rs-color-surface-primary, #ffffff);--rs-sidebar-border: var(--rs-color-stroke-default, #d1d1d1);--rs-sidebar-color: var(--rs-color-text-primary, #000000);--rs-sidebar-muted: var(--rs-color-text-secondary, #909090);--rs-sidebar-active: var(--rs-color-text-button-tertiary, #48a0d4);--rs-sidebar-hover: var(--rs-color-button-blue-surface, #e6f6fb);--rs-sidebar-width-collapsed: 72px;--rs-sidebar-width-expanded: 286px;background:var(--rs-sidebar-background);border-right:1px solid var(--rs-sidebar-border);box-sizing:border-box;color:var(--rs-sidebar-color);display:flex;flex-direction:column;flex-shrink:0;font-family:var(--rs-font-family, "Inter", sans-serif);font-size:10px;gap:32px;height:100%;overflow:hidden;transition:width .18s ease-in-out;width:var(--rs-sidebar-width-collapsed)}.rs-sidebar--pc{--rs-sidebar-active: var(--rs-color-icon-project-pc, #014a9f);--rs-sidebar-hover: var(--rs-color-darkblue-100, #e5ecf5)}.rs-sidebar--alta{--rs-sidebar-active: var(--rs-color-icon-project-alta, #65ac1e);--rs-sidebar-hover: var(--rs-color-green-100, #edf7e6)}.rs-sidebar--cc{--rs-sidebar-active: var(--rs-color-icon-project-cc, #49a0d4);--rs-sidebar-hover: var(--rs-color-blue-100, #e6f6fb)}.rs-sidebar--pog{--rs-sidebar-active: var(--rs-color-icon-project-pog, #007c2f);--rs-sidebar-hover: var(--rs-color-navygreen-100, #e5f1ea)}.rs-sidebar--cyo{--rs-sidebar-active: var(--rs-color-icon-project-cyo, #49a0d4);--rs-sidebar-hover: var(--rs-color-blue-100, #e6f6fb)}.rs-sidebar--expanded,.rs-sidebar--mobile-open{overflow:visible;width:var(--rs-sidebar-width-expanded)}.rs-sidebar__header{align-items:center;position:relative;box-sizing:border-box;display:flex;gap:6px;justify-content:space-between;min-height:48px;padding:16px 12px 16px 16px}.rs-sidebar__brand{align-items:center;display:flex;color:var(--rs-sidebar-active);gap:6px;min-width:0;width:max-content}.rs-sidebar__brand--trigger{flex:1}.rs-sidebar__module-trigger{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:inline-flex;justify-content:flex-start;font:inherit;gap:6px;min-width:0;appearance:none;-webkit-appearance:none;padding:0;text-align:left;width:100%}.rs-sidebar__module-trigger:hover:not(:disabled),.rs-sidebar__module-trigger:active:not(:disabled){background:transparent;color:inherit}.rs-sidebar__module-trigger:focus-visible{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:2px}.rs-sidebar__module-chevron{margin-left:auto}.rs-sidebar__title,.rs-sidebar__item-label,.rs-sidebar__item-chevron{max-width:0;opacity:0;overflow:hidden;transition:max-width .18s ease-in-out,opacity .18s ease-in-out;white-space:nowrap}.rs-sidebar--expanded .rs-sidebar__title,.rs-sidebar--expanded .rs-sidebar__item-label,.rs-sidebar--expanded .rs-sidebar__item-chevron,.rs-sidebar--mobile-open .rs-sidebar__title,.rs-sidebar--mobile-open .rs-sidebar__item-label,.rs-sidebar--mobile-open .rs-sidebar__item-chevron{max-width:220px;opacity:1}.rs-sidebar__title{color:var(--rs-sidebar-color);font-size:.625rem;font-weight:400;line-height:1.2;text-overflow:ellipsis}.rs-sidebar__module-menu.p-menu{background:var(--rs-sidebar-background);border:1px solid var(--rs-sidebar-border);border-radius:4px;box-shadow:0 8px 24px #0000002e;left:16px;min-width:calc(var(--rs-sidebar-width-expanded) - 32px);overflow:hidden;padding:0;position:absolute;top:52px;z-index:20}.rs-sidebar__module-menu .p-menu-list{gap:0;padding:0}.rs-sidebar__module-option .p-menu-item-content{color:var(--rs-sidebar-color);border-radius:0}.rs-sidebar__module-option .p-menu-item-link{font-family:inherit;font-size:.625rem;line-height:1.2;min-height:38px;padding:10px 14px}.rs-sidebar__module-option:not(.p-disabled) .p-menu-item-content:hover,.rs-sidebar__module-option--active .p-menu-item-content{background:var(--rs-sidebar-hover);color:var(--rs-sidebar-color)}.rs-sidebar__module-option--disabled .p-menu-item-content{color:var(--rs-sidebar-muted);cursor:not-allowed}.rs-sidebar__module-option--disabled .p-menu-item-content:hover{background:transparent}.rs-sidebar__module-option.p-focus .p-menu-item-content{background:var(--rs-sidebar-hover);color:var(--rs-sidebar-color)}.rs-sidebar__module-option.p-focus .p-menu-item-link{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:-2px}.rs-sidebar__header-button{align-items:center;background:transparent;border:0;border-radius:999px;color:var(--rs-color-icon-secondary, #000000);cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;appearance:none;-webkit-appearance:none;min-height:24px;min-width:24px;padding:2px}.rs-sidebar__header-button:hover:not(:disabled),.rs-sidebar__header-button:active:not(:disabled){background:var(--rs-sidebar-hover)!important;color:var(--rs-color-icon-secondary, #000000)}.rs-sidebar__header-button:focus-visible,.rs-sidebar__item:focus-visible{outline:2px solid var(--rs-color-stroke-focused, #48a0d4);outline-offset:-2px}.rs-sidebar__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:0}.rs-sidebar__nav{min-height:0}.rs-sidebar__list{list-style:none;margin:0;padding:0}.rs-sidebar__item{align-items:center;background:transparent;border:0;border-right:3px solid transparent;box-sizing:border-box;color:var(--rs-sidebar-active);cursor:pointer;display:flex;justify-content:flex-start;font:inherit;font-weight:300;gap:8px;appearance:none;-webkit-appearance:none;min-height:27px;padding:7px 8px 7px 16px;text-align:left;width:100%}.rs-sidebar__item:hover:not(:disabled),.rs-sidebar__item:active:not(:disabled){background:var(--rs-sidebar-hover)!important;color:var(--rs-sidebar-active)}.rs-sidebar__item:disabled{color:var(--rs-sidebar-muted);cursor:not-allowed;opacity:1}.rs-sidebar__item--active{background:var(--rs-sidebar-hover)!important;border-right-color:var(--rs-sidebar-active)}.rs-sidebar__item--footer{color:var(--rs-sidebar-color);min-height:40px;padding-bottom:16px;padding-left:16px;padding-top:16px}.rs-sidebar__item-icon{flex:0 0 auto;color:var(--rs-sidebar-active)}.rs-sidebar__item-label{color:var(--rs-sidebar-color);min-width:0;text-overflow:ellipsis}.rs-sidebar__item-chevron{margin-left:auto}.rs-sidebar__footer{margin-top:auto}.rs-sidebar--mobile-open{border-right:0;gap:clamp(8px,4vh,52px);inset:0;position:fixed;width:100%;z-index:10000}.rs-sidebar--mobile-open .rs-sidebar__header{min-height:80px}.rs-sidebar--mobile-open .rs-sidebar__module-menu{left:16px;min-width:min(320px,calc(100% - 32px));top:88px}.rs-sidebar--mobile-open .rs-sidebar__item{font-size:1rem;min-height:64px;padding-bottom:20px;padding-top:20px}
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC;CAC3C,CAAC;AAuCF,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAuER;AAED,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+BF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,+BAAoC,
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC;CAC3C,CAAC;AAuCF,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAuER;AAED,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+BF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,+BAAoC,yBA0B9C;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,UAAU,CAAC,EAAE,EACxD,OAAO,UAAQ,EACf,WAAW,GAAE,iBAAsC,UAkEpD;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,OAAO,GAAE,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAM,GAC7D,iBAAiB,EAAE,CA6BrB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,EACjC,OAAO,GAAE,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAM,UAS/D;AAiKD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,UAIjE"}
|
package/dist/vite.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createHash as M } from "node:crypto";
|
|
2
|
-
import { readFile as
|
|
3
|
-
import { join as
|
|
2
|
+
import { readFile as g, readdir as x } from "node:fs/promises";
|
|
3
|
+
import { join as w, extname as _, sep as H } from "node:path";
|
|
4
4
|
import { createRequire as N } from "node:module";
|
|
5
|
-
const
|
|
5
|
+
const f = ["outlined", "rounded", "sharp"], m = "outlined", P = /^[a-z0-9_]+$/, k = /* @__PURE__ */ new Set([".js", ".jsx", ".mjs", ".ts", ".tsx", ".vue"]), z = /* @__PURE__ */ new Set([".git", "dist", "node_modules", "storybook-static"]), I = [
|
|
6
6
|
"arrow_drop_down",
|
|
7
7
|
"arrow_drop_up",
|
|
8
8
|
"arrow_left",
|
|
@@ -95,14 +95,15 @@ async function h(t, e) {
|
|
|
95
95
|
async function C(t, e = {}) {
|
|
96
96
|
const o = J();
|
|
97
97
|
for (const s of I)
|
|
98
|
-
|
|
98
|
+
for (const n of f)
|
|
99
|
+
u(o, { family: n, name: s });
|
|
99
100
|
for (const s of e.include ?? [])
|
|
100
|
-
u(o, typeof s == "string" ? { family:
|
|
101
|
+
u(o, typeof s == "string" ? { family: m, name: s } : s);
|
|
101
102
|
if (e.scan !== !1) {
|
|
102
|
-
const s = e.roots ?? [
|
|
103
|
+
const s = e.roots ?? [w(t.root, "src")];
|
|
103
104
|
for (const n of s)
|
|
104
105
|
for (const a of await j(n)) {
|
|
105
|
-
const r = await
|
|
106
|
+
const r = await g(a, "utf8");
|
|
106
107
|
q(r, o);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
@@ -137,9 +138,12 @@ function L(t, e, o = !1, s = $) {
|
|
|
137
138
|
` font-family: "${d.outlined}";`,
|
|
138
139
|
" font-size: var(--rs-icon-size);",
|
|
139
140
|
" font-style: normal;",
|
|
141
|
+
' font-feature-settings: "liga";',
|
|
142
|
+
' -webkit-font-feature-settings: "liga";',
|
|
140
143
|
' font-variation-settings: "FILL" var(--rs-icon-fill), "wght" var(--rs-icon-weight), "GRAD" var(--rs-icon-grade), "opsz" var(--rs-icon-optical-size);',
|
|
141
144
|
" font-weight: 400;",
|
|
142
145
|
" justify-content: center;",
|
|
146
|
+
" direction: ltr;",
|
|
143
147
|
" letter-spacing: normal;",
|
|
144
148
|
" line-height: 1;",
|
|
145
149
|
" text-transform: none;",
|
|
@@ -152,7 +156,7 @@ function L(t, e, o = !1, s = $) {
|
|
|
152
156
|
".rs-icon--prime::before { content: var(--rs-icon-content); }"
|
|
153
157
|
);
|
|
154
158
|
const a = /* @__PURE__ */ new Set();
|
|
155
|
-
for (const r of
|
|
159
|
+
for (const r of f)
|
|
156
160
|
for (const i of t.get(r) ?? [])
|
|
157
161
|
a.add(i);
|
|
158
162
|
for (const r of [...a].sort())
|
|
@@ -193,11 +197,11 @@ function U(t, e, o = {}) {
|
|
|
193
197
|
}
|
|
194
198
|
async function V(t, e, o) {
|
|
195
199
|
const s = (await import("subset-font")).default, n = [];
|
|
196
|
-
for (const a of
|
|
200
|
+
for (const a of f) {
|
|
197
201
|
const r = [...t.get(a) ?? []].sort();
|
|
198
202
|
if (r.length === 0)
|
|
199
203
|
continue;
|
|
200
|
-
const i = B(a), c = await
|
|
204
|
+
const i = B(a), c = await g(i), l = await s(c, r.join(" "), {
|
|
201
205
|
targetFormat: "woff2"
|
|
202
206
|
}), y = M("sha256").update(l).digest("hex").slice(0, 8), p = `rs-material-symbols-${a}-${y}.woff2`;
|
|
203
207
|
n.push({
|
|
@@ -229,14 +233,14 @@ function q(t, e) {
|
|
|
229
233
|
let s;
|
|
230
234
|
for (; s = o.exec(t); ) {
|
|
231
235
|
const c = E(s[1] ?? ""), l = c.name ?? c[":name"], y = b(c.family ?? c[":family"]);
|
|
232
|
-
l && u(e, { family: y ??
|
|
236
|
+
l && u(e, { family: y ?? m, name: S(l) });
|
|
233
237
|
}
|
|
234
238
|
const n = /\brsPrimeIcon\(\s*["']([a-z0-9_]+)["'](?:\s*,\s*\{([^)]*)\})?/g;
|
|
235
239
|
let a;
|
|
236
240
|
for (; a = n.exec(t); ) {
|
|
237
241
|
const c = b(a[2]?.match(/\bfamily\s*:\s*["'](\w+)["']/)?.[1]);
|
|
238
242
|
u(e, {
|
|
239
|
-
family: c ??
|
|
243
|
+
family: c ?? m,
|
|
240
244
|
name: a[1] ?? ""
|
|
241
245
|
});
|
|
242
246
|
}
|
|
@@ -244,7 +248,7 @@ function q(t, e) {
|
|
|
244
248
|
let i;
|
|
245
249
|
for (; i = r.exec(t); )
|
|
246
250
|
u(e, {
|
|
247
|
-
family:
|
|
251
|
+
family: m,
|
|
248
252
|
name: i[1] ?? ""
|
|
249
253
|
});
|
|
250
254
|
}
|
|
@@ -259,22 +263,22 @@ function S(t) {
|
|
|
259
263
|
return t.replace(/^['"](.+)['"]$/, "$1");
|
|
260
264
|
}
|
|
261
265
|
function u(t, e) {
|
|
262
|
-
const o = e.family ??
|
|
263
|
-
!
|
|
266
|
+
const o = e.family ?? m, s = e.name.trim();
|
|
267
|
+
!f.includes(o) || !P.test(s) || t.get(o)?.add(s);
|
|
264
268
|
}
|
|
265
269
|
function b(t) {
|
|
266
270
|
const e = t ? S(t) : "";
|
|
267
|
-
return
|
|
271
|
+
return f.includes(e) ? e : void 0;
|
|
268
272
|
}
|
|
269
273
|
function J() {
|
|
270
|
-
return new Map(
|
|
274
|
+
return new Map(f.map((t) => [t, /* @__PURE__ */ new Set()]));
|
|
271
275
|
}
|
|
272
276
|
async function j(t) {
|
|
273
277
|
try {
|
|
274
278
|
const e = await x(t, { withFileTypes: !0 });
|
|
275
279
|
return (await Promise.all(
|
|
276
280
|
e.map(async (s) => {
|
|
277
|
-
const n =
|
|
281
|
+
const n = w(t, s.name);
|
|
278
282
|
return s.isDirectory() ? z.has(s.name) ? [] : j(n) : k.has(_(s.name)) ? [n] : [];
|
|
279
283
|
})
|
|
280
284
|
)).flat();
|
|
@@ -286,7 +290,7 @@ function F(t, e) {
|
|
|
286
290
|
return `${t.endsWith("/") ? t : `${t}/`}${e}`.replaceAll(`${H}`, "/");
|
|
287
291
|
}
|
|
288
292
|
function tt(t) {
|
|
289
|
-
return
|
|
293
|
+
return f.map((e) => `${e}: ${[...t.get(e) ?? []].sort().join(", ")}`).join(`
|
|
290
294
|
`);
|
|
291
295
|
}
|
|
292
296
|
export {
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { extname, join, sep } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport type { HtmlTagDescriptor, IndexHtmlTransformResult, Plugin, ResolvedConfig } from \"vite\";\n\nimport type { RsIconFamily } from \"./components/RsIcon\";\n\ntype IconInput = string | { family?: RsIconFamily; name: string };\nexport type RsIconFontDisplay = \"block\" | \"swap\" | \"fallback\" | \"optional\";\n\nexport type RobosophyMaterialSymbolsOptions = {\n fontDisplay?: RsIconFontDisplay;\n include?: IconInput[];\n preload?: boolean;\n roots?: string[];\n scan?: boolean;\n};\n\ntype IconUsageMap = Map<RsIconFamily, Set<string>>;\ntype MaterialSymbolsLinkAssets = {\n cssHref: string;\n fonts: Pick<GeneratedFontAsset, \"href\">[];\n};\n\nconst families = [\"outlined\", \"rounded\", \"sharp\"] as const satisfies readonly RsIconFamily[];\nconst defaultFamily: RsIconFamily = \"outlined\";\nconst iconNamePattern = /^[a-z0-9_]+$/;\nconst sourceExtensions = new Set([\".js\", \".jsx\", \".mjs\", \".ts\", \".tsx\", \".vue\"]);\nconst skippedDirs = new Set([\".git\", \"dist\", \"node_modules\", \"storybook-static\"]);\nconst internalIconNames = [\n \"arrow_drop_down\",\n \"arrow_drop_up\",\n \"arrow_left\",\n \"chevron_right\",\n \"close\",\n \"login\",\n \"nest_eco_leaf\",\n];\n\nconst familyFontNames: Record<RsIconFamily, string> = {\n outlined: \"Material Symbols Outlined Variable\",\n rounded: \"Material Symbols Rounded Variable\",\n sharp: \"Material Symbols Sharp Variable\",\n};\n\nconst familyPackages: Record<RsIconFamily, string> = {\n outlined: \"@fontsource-variable/material-symbols-outlined\",\n rounded: \"@fontsource-variable/material-symbols-rounded\",\n sharp: \"@fontsource-variable/material-symbols-sharp\",\n};\n\nconst familyFontVariants: Record<RsIconFamily, string> = {\n outlined: \"wght\",\n rounded: \"full\",\n sharp: \"full\",\n};\n\nconst defaultFontDisplay: RsIconFontDisplay = \"block\";\nconst defaultPreload = true;\nconst require = createRequire(import.meta.url);\n\nexport function robosophyMaterialSymbols(\n options: RobosophyMaterialSymbolsOptions = {},\n): Plugin {\n let config: ResolvedConfig;\n return {\n name: \"robosophy-material-symbols\",\n async configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n async transformIndexHtml(): Promise<IndexHtmlTransformResult> {\n const assets = await ensureGeneratedAssets(config, options);\n\n return buildMaterialSymbolsHtmlTags(assets, options);\n },\n configureServer(server) {\n server.middlewares.use(async (request, response, next) => {\n if (!request.url?.startsWith(\"/@robosophy-material-symbols/\")) {\n next();\n return;\n }\n\n try {\n const assets = await ensureGeneratedAssets(config, options);\n const fileName = decodeURIComponent(\n request.url.replace(\"/@robosophy-material-symbols/\", \"\").split(\"?\")[0] ?? \"\",\n );\n\n if (fileName === \"rs-material-symbols.css\") {\n response.setHeader(\"Content-Type\", \"text/css; charset=utf-8\");\n response.end(assets.css);\n return;\n }\n\n const font = assets.fonts.find((asset) => asset.fileName === fileName);\n\n if (font) {\n response.setHeader(\"Content-Type\", \"font/woff2\");\n response.end(font.source);\n return;\n }\n\n next();\n } catch (error) {\n next(error);\n }\n });\n },\n async generateBundle(_outputOptions, bundle) {\n const assets = await ensureGeneratedAssets(config, options);\n\n for (const font of assets.fonts) {\n this.emitFile({\n fileName: `assets/${font.fileName}`,\n name: font.fileName,\n source: font.source,\n type: \"asset\",\n });\n }\n\n this.emitFile({\n fileName: \"assets/rs-material-symbols.css\",\n name: \"rs-material-symbols.css\",\n source: assets.css,\n type: \"asset\",\n });\n\n for (const asset of Object.values(bundle)) {\n if (asset.type === \"asset\" && asset.fileName.endsWith(\".html\")) {\n asset.source = injectMaterialSymbolsHtmlLinks(String(asset.source), assets, options);\n }\n }\n },\n };\n}\n\ntype GeneratedFontAsset = {\n family: RsIconFamily;\n fileName: string;\n href: string;\n source: Buffer;\n};\n\ntype GeneratedMaterialSymbolsAssets = {\n css: string;\n cssHref: string;\n fonts: GeneratedFontAsset[];\n};\n\nasync function ensureGeneratedAssets(\n config: ResolvedConfig,\n options: RobosophyMaterialSymbolsOptions,\n) {\n const usages = await collectMaterialSymbolUsages(config, options);\n const devMode = config.command === \"serve\";\n const fonts = await generateFontAssets(usages, devMode, config.base);\n const css = buildMaterialSymbolsCss(\n usages,\n fonts,\n devMode,\n options.fontDisplay ?? defaultFontDisplay,\n );\n\n return {\n css,\n cssHref: devMode\n ? \"/@robosophy-material-symbols/rs-material-symbols.css\"\n : withBase(config.base, \"assets/rs-material-symbols.css\"),\n fonts,\n };\n}\n\nexport async function collectMaterialSymbolUsages(\n config: Pick<ResolvedConfig, \"root\">,\n options: RobosophyMaterialSymbolsOptions = {},\n) {\n const usages = createUsageMap();\n\n for (const name of internalIconNames) {\n addUsage(usages, { family: defaultFamily, name });\n }\n\n for (const icon of options.include ?? []) {\n addUsage(usages, typeof icon === \"string\" ? { family: defaultFamily, name: icon } : icon);\n }\n\n if (options.scan !== false) {\n const roots = options.roots ?? [join(config.root, \"src\")];\n\n for (const root of roots) {\n for (const filePath of await listSourceFiles(root)) {\n const source = await readFile(filePath, \"utf8\");\n collectFromSource(source, usages);\n }\n }\n }\n\n return usages;\n}\n\nexport function buildMaterialSymbolsCss(\n usages: IconUsageMap,\n fonts: Pick<GeneratedFontAsset, \"family\" | \"fileName\">[],\n devMode = false,\n fontDisplay: RsIconFontDisplay = defaultFontDisplay,\n) {\n const lines: string[] = [];\n\n for (const font of fonts) {\n const fontUrl = devMode\n ? `/@robosophy-material-symbols/${font.fileName}`\n : `./${font.fileName}`;\n\n lines.push(\n \"@font-face {\",\n ` font-family: \"${familyFontNames[font.family]}\";`,\n ` font-display: ${fontDisplay};`,\n \" font-style: normal;\",\n \" font-weight: 100 700;\",\n ` src: url(\"${fontUrl}\") format(\"woff2-variations\");`,\n \"}\",\n );\n }\n\n lines.push(\n \".rs-icon {\",\n \" --rs-icon-color: currentColor;\",\n \" --rs-icon-fill: 0;\",\n \" --rs-icon-grade: 0;\",\n \" --rs-icon-optical-size: 24;\",\n \" --rs-icon-size: 24px;\",\n \" --rs-icon-weight: 400;\",\n \" align-items: center;\",\n \" color: var(--rs-icon-color);\",\n \" display: inline-flex;\",\n \" flex: 0 0 auto;\",\n ` font-family: \"${familyFontNames.outlined}\";`,\n \" font-size: var(--rs-icon-size);\",\n \" font-style: normal;\",\n ' font-variation-settings: \"FILL\" var(--rs-icon-fill), \"wght\" var(--rs-icon-weight), \"GRAD\" var(--rs-icon-grade), \"opsz\" var(--rs-icon-optical-size);',\n \" font-weight: 400;\",\n \" justify-content: center;\",\n \" letter-spacing: normal;\",\n \" line-height: 1;\",\n \" text-transform: none;\",\n \" user-select: none;\",\n \" white-space: nowrap;\",\n \" word-wrap: normal;\",\n \"}\",\n `.rs-icon--rounded { font-family: \"${familyFontNames.rounded}\"; }`,\n `.rs-icon--sharp { font-family: \"${familyFontNames.sharp}\"; }`,\n \".rs-icon--prime::before { content: var(--rs-icon-content); }\",\n );\n\n const names = new Set<string>();\n\n for (const family of families) {\n for (const name of usages.get(family) ?? []) {\n names.add(name);\n }\n }\n\n for (const name of [...names].sort()) {\n lines.push(`.rs-icon-${name} { --rs-icon-content: \"${name}\"; }`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function buildMaterialSymbolsHtmlTags(\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n): HtmlTagDescriptor[] {\n const tags: HtmlTagDescriptor[] = [];\n\n if (options.preload ?? defaultPreload) {\n for (const font of assets.fonts) {\n tags.push({\n attrs: {\n as: \"font\",\n crossorigin: \"\",\n href: font.href,\n rel: \"preload\",\n type: \"font/woff2\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n }\n }\n\n tags.push({\n attrs: {\n href: assets.cssHref,\n rel: \"stylesheet\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n\n return tags;\n}\n\nexport function injectMaterialSymbolsHtmlLinks(\n html: string,\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n) {\n const links = buildMaterialSymbolsHtmlTags(assets, options)\n .map(formatHtmlLinkTag)\n .filter((link) => !html.includes(`href=\"${getLinkHref(link)}\"`));\n\n return links.length === 0\n ? html\n : html.replace(\"</head>\", `${links.map((link) => ` ${link}`).join(\"\\n\")}\\n</head>`);\n}\n\nasync function generateFontAssets(\n usages: IconUsageMap,\n devMode: boolean,\n base: string,\n): Promise<GeneratedFontAsset[]> {\n const subsetFont = (await import(\"subset-font\")).default;\n const fonts: GeneratedFontAsset[] = [];\n\n for (const family of families) {\n const names = [...(usages.get(family) ?? [])].sort();\n\n if (names.length === 0) {\n continue;\n }\n\n const sourcePath = resolveFontPath(family);\n const source = await readFile(sourcePath);\n const subset = await subsetFont(source, names.join(\" \"), {\n targetFormat: \"woff2\",\n });\n const hash = createHash(\"sha256\").update(subset).digest(\"hex\").slice(0, 8);\n const fileName = `rs-material-symbols-${family}-${hash}.woff2`;\n\n fonts.push({\n family,\n fileName,\n href: fontHref(fileName, devMode, base),\n source: subset,\n });\n }\n\n return fonts;\n}\n\nfunction resolveFontPath(family: RsIconFamily) {\n return require.resolve(\n `${familyPackages[family]}/files/material-symbols-${family}-latin-${familyFontVariants[family]}-normal.woff2`,\n );\n}\n\nfunction fontHref(fileName: string, devMode: boolean, base: string) {\n return devMode\n ? `/@robosophy-material-symbols/${fileName}`\n : withBase(base, `assets/${fileName}`);\n}\n\nfunction formatHtmlLinkTag(tag: HtmlTagDescriptor) {\n const attrs = Object.entries(tag.attrs ?? {})\n .map(([name, value]) => (value === \"\" ? name : `${name}=\"${value}\"`))\n .join(\" \");\n\n return `<${tag.tag}${attrs ? ` ${attrs}` : \"\"}>`;\n}\n\nfunction getLinkHref(link: string) {\n return link.match(/\\bhref=\"([^\"]+)\"/)?.[1] ?? \"\";\n}\n\nfunction collectFromSource(source: string, usages: IconUsageMap) {\n const rsIconTagPattern = /<RsIcon\\b([^>]*)>/g;\n let tagMatch: RegExpExecArray | null;\n\n while ((tagMatch = rsIconTagPattern.exec(source))) {\n const attrs = parseStaticAttributes(tagMatch[1] ?? \"\");\n const name = attrs.name ?? attrs[\":name\"];\n const family = toFamily(attrs.family ?? attrs[\":family\"]);\n\n if (name) {\n addUsage(usages, { family: family ?? defaultFamily, name: unwrapStaticValue(name) });\n }\n }\n\n const primeHelperPattern =\n /\\brsPrimeIcon\\(\\s*[\"']([a-z0-9_]+)[\"'](?:\\s*,\\s*\\{([^)]*)\\})?/g;\n let helperMatch: RegExpExecArray | null;\n\n while ((helperMatch = primeHelperPattern.exec(source))) {\n const family = toFamily(helperMatch[2]?.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/)?.[1]);\n addUsage(usages, {\n family: family ?? defaultFamily,\n name: helperMatch[1] ?? \"\",\n });\n }\n\n const objectIconPattern = /\\bicon\\s*:\\s*[\"']([a-z0-9_]+)[\"']/g;\n let objectMatch: RegExpExecArray | null;\n\n while ((objectMatch = objectIconPattern.exec(source))) {\n addUsage(usages, {\n family: defaultFamily,\n name: objectMatch[1] ?? \"\",\n });\n }\n}\n\nfunction parseStaticAttributes(source: string) {\n const attrs: Record<string, string> = {};\n const attrPattern = /([:@\\w-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n let match: RegExpExecArray | null;\n\n while ((match = attrPattern.exec(source))) {\n attrs[match[1] ?? \"\"] = match[2] ?? match[3] ?? \"\";\n }\n\n return attrs;\n}\n\nfunction unwrapStaticValue(value: string) {\n return value.replace(/^['\"](.+)['\"]$/, \"$1\");\n}\n\nfunction addUsage(usages: IconUsageMap, icon: { family?: RsIconFamily; name: string }) {\n const family = icon.family ?? defaultFamily;\n const name = icon.name.trim();\n\n if (!families.includes(family) || !iconNamePattern.test(name)) {\n return;\n }\n\n usages.get(family)?.add(name);\n}\n\nfunction toFamily(value?: string): RsIconFamily | undefined {\n const normalized = value ? unwrapStaticValue(value) : \"\";\n return families.includes(normalized as RsIconFamily)\n ? (normalized as RsIconFamily)\n : undefined;\n}\n\nfunction createUsageMap(): IconUsageMap {\n return new Map(families.map((family) => [family, new Set<string>()]));\n}\n\nasync function listSourceFiles(root: string): Promise<string[]> {\n try {\n const entries = await readdir(root, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(root, entry.name);\n\n if (entry.isDirectory()) {\n return skippedDirs.has(entry.name) ? [] : listSourceFiles(path);\n }\n\n return sourceExtensions.has(extname(entry.name)) ? [path] : [];\n }),\n );\n\n return files.flat();\n } catch {\n return [];\n }\n}\n\nfunction withBase(base: string, path: string) {\n const cleanBase = base.endsWith(\"/\") ? base : `${base}/`;\n return `${cleanBase}${path}`.replaceAll(`${sep}`, \"/\");\n}\n\nexport function formatDetectedMaterialSymbols(usages: IconUsageMap) {\n return families\n .map((family) => `${family}: ${[...(usages.get(family) ?? [])].sort().join(\", \")}`)\n .join(\"\\n\");\n}\n"],"names":["families","defaultFamily","iconNamePattern","sourceExtensions","skippedDirs","internalIconNames","familyFontNames","familyPackages","familyFontVariants","defaultFontDisplay","defaultPreload","require","createRequire","robosophyMaterialSymbols","options","config","resolvedConfig","assets","ensureGeneratedAssets","buildMaterialSymbolsHtmlTags","server","request","response","next","fileName","font","asset","error","_outputOptions","bundle","injectMaterialSymbolsHtmlLinks","usages","collectMaterialSymbolUsages","devMode","fonts","generateFontAssets","buildMaterialSymbolsCss","withBase","createUsageMap","name","addUsage","icon","roots","join","root","filePath","listSourceFiles","source","readFile","collectFromSource","fontDisplay","lines","fontUrl","names","family","tags","html","links","formatHtmlLinkTag","link","getLinkHref","base","subsetFont","sourcePath","resolveFontPath","subset","hash","createHash","fontHref","tag","attrs","value","rsIconTagPattern","tagMatch","parseStaticAttributes","toFamily","unwrapStaticValue","primeHelperPattern","helperMatch","objectIconPattern","objectMatch","attrPattern","match","normalized","entries","readdir","entry","path","extname","sep","formatDetectedMaterialSymbols"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { extname, join, sep } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport type { HtmlTagDescriptor, IndexHtmlTransformResult, Plugin, ResolvedConfig } from \"vite\";\n\nimport type { RsIconFamily } from \"./components/RsIcon\";\n\ntype IconInput = string | { family?: RsIconFamily; name: string };\nexport type RsIconFontDisplay = \"block\" | \"swap\" | \"fallback\" | \"optional\";\n\nexport type RobosophyMaterialSymbolsOptions = {\n fontDisplay?: RsIconFontDisplay;\n include?: IconInput[];\n preload?: boolean;\n roots?: string[];\n scan?: boolean;\n};\n\ntype IconUsageMap = Map<RsIconFamily, Set<string>>;\ntype MaterialSymbolsLinkAssets = {\n cssHref: string;\n fonts: Pick<GeneratedFontAsset, \"href\">[];\n};\n\nconst families = [\"outlined\", \"rounded\", \"sharp\"] as const satisfies readonly RsIconFamily[];\nconst defaultFamily: RsIconFamily = \"outlined\";\nconst iconNamePattern = /^[a-z0-9_]+$/;\nconst sourceExtensions = new Set([\".js\", \".jsx\", \".mjs\", \".ts\", \".tsx\", \".vue\"]);\nconst skippedDirs = new Set([\".git\", \"dist\", \"node_modules\", \"storybook-static\"]);\nconst internalIconNames = [\n \"arrow_drop_down\",\n \"arrow_drop_up\",\n \"arrow_left\",\n \"chevron_right\",\n \"close\",\n \"login\",\n \"nest_eco_leaf\",\n];\n\nconst familyFontNames: Record<RsIconFamily, string> = {\n outlined: \"Material Symbols Outlined Variable\",\n rounded: \"Material Symbols Rounded Variable\",\n sharp: \"Material Symbols Sharp Variable\",\n};\n\nconst familyPackages: Record<RsIconFamily, string> = {\n outlined: \"@fontsource-variable/material-symbols-outlined\",\n rounded: \"@fontsource-variable/material-symbols-rounded\",\n sharp: \"@fontsource-variable/material-symbols-sharp\",\n};\n\nconst familyFontVariants: Record<RsIconFamily, string> = {\n outlined: \"wght\",\n rounded: \"full\",\n sharp: \"full\",\n};\n\nconst defaultFontDisplay: RsIconFontDisplay = \"block\";\nconst defaultPreload = true;\nconst require = createRequire(import.meta.url);\n\nexport function robosophyMaterialSymbols(\n options: RobosophyMaterialSymbolsOptions = {},\n): Plugin {\n let config: ResolvedConfig;\n return {\n name: \"robosophy-material-symbols\",\n async configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n async transformIndexHtml(): Promise<IndexHtmlTransformResult> {\n const assets = await ensureGeneratedAssets(config, options);\n\n return buildMaterialSymbolsHtmlTags(assets, options);\n },\n configureServer(server) {\n server.middlewares.use(async (request, response, next) => {\n if (!request.url?.startsWith(\"/@robosophy-material-symbols/\")) {\n next();\n return;\n }\n\n try {\n const assets = await ensureGeneratedAssets(config, options);\n const fileName = decodeURIComponent(\n request.url.replace(\"/@robosophy-material-symbols/\", \"\").split(\"?\")[0] ?? \"\",\n );\n\n if (fileName === \"rs-material-symbols.css\") {\n response.setHeader(\"Content-Type\", \"text/css; charset=utf-8\");\n response.end(assets.css);\n return;\n }\n\n const font = assets.fonts.find((asset) => asset.fileName === fileName);\n\n if (font) {\n response.setHeader(\"Content-Type\", \"font/woff2\");\n response.end(font.source);\n return;\n }\n\n next();\n } catch (error) {\n next(error);\n }\n });\n },\n async generateBundle(_outputOptions, bundle) {\n const assets = await ensureGeneratedAssets(config, options);\n\n for (const font of assets.fonts) {\n this.emitFile({\n fileName: `assets/${font.fileName}`,\n name: font.fileName,\n source: font.source,\n type: \"asset\",\n });\n }\n\n this.emitFile({\n fileName: \"assets/rs-material-symbols.css\",\n name: \"rs-material-symbols.css\",\n source: assets.css,\n type: \"asset\",\n });\n\n for (const asset of Object.values(bundle)) {\n if (asset.type === \"asset\" && asset.fileName.endsWith(\".html\")) {\n asset.source = injectMaterialSymbolsHtmlLinks(String(asset.source), assets, options);\n }\n }\n },\n };\n}\n\ntype GeneratedFontAsset = {\n family: RsIconFamily;\n fileName: string;\n href: string;\n source: Buffer;\n};\n\ntype GeneratedMaterialSymbolsAssets = {\n css: string;\n cssHref: string;\n fonts: GeneratedFontAsset[];\n};\n\nasync function ensureGeneratedAssets(\n config: ResolvedConfig,\n options: RobosophyMaterialSymbolsOptions,\n) {\n const usages = await collectMaterialSymbolUsages(config, options);\n const devMode = config.command === \"serve\";\n const fonts = await generateFontAssets(usages, devMode, config.base);\n const css = buildMaterialSymbolsCss(\n usages,\n fonts,\n devMode,\n options.fontDisplay ?? defaultFontDisplay,\n );\n\n return {\n css,\n cssHref: devMode\n ? \"/@robosophy-material-symbols/rs-material-symbols.css\"\n : withBase(config.base, \"assets/rs-material-symbols.css\"),\n fonts,\n };\n}\n\nexport async function collectMaterialSymbolUsages(\n config: Pick<ResolvedConfig, \"root\">,\n options: RobosophyMaterialSymbolsOptions = {},\n) {\n const usages = createUsageMap();\n\n for (const name of internalIconNames) {\n for (const family of families) {\n addUsage(usages, { family, name });\n }\n }\n\n for (const icon of options.include ?? []) {\n addUsage(usages, typeof icon === \"string\" ? { family: defaultFamily, name: icon } : icon);\n }\n\n if (options.scan !== false) {\n const roots = options.roots ?? [join(config.root, \"src\")];\n\n for (const root of roots) {\n for (const filePath of await listSourceFiles(root)) {\n const source = await readFile(filePath, \"utf8\");\n collectFromSource(source, usages);\n }\n }\n }\n\n return usages;\n}\n\nexport function buildMaterialSymbolsCss(\n usages: IconUsageMap,\n fonts: Pick<GeneratedFontAsset, \"family\" | \"fileName\">[],\n devMode = false,\n fontDisplay: RsIconFontDisplay = defaultFontDisplay,\n) {\n const lines: string[] = [];\n\n for (const font of fonts) {\n const fontUrl = devMode\n ? `/@robosophy-material-symbols/${font.fileName}`\n : `./${font.fileName}`;\n\n lines.push(\n \"@font-face {\",\n ` font-family: \"${familyFontNames[font.family]}\";`,\n ` font-display: ${fontDisplay};`,\n \" font-style: normal;\",\n \" font-weight: 100 700;\",\n ` src: url(\"${fontUrl}\") format(\"woff2-variations\");`,\n \"}\",\n );\n }\n\n lines.push(\n \".rs-icon {\",\n \" --rs-icon-color: currentColor;\",\n \" --rs-icon-fill: 0;\",\n \" --rs-icon-grade: 0;\",\n \" --rs-icon-optical-size: 24;\",\n \" --rs-icon-size: 24px;\",\n \" --rs-icon-weight: 400;\",\n \" align-items: center;\",\n \" color: var(--rs-icon-color);\",\n \" display: inline-flex;\",\n \" flex: 0 0 auto;\",\n ` font-family: \"${familyFontNames.outlined}\";`,\n \" font-size: var(--rs-icon-size);\",\n \" font-style: normal;\",\n ' font-feature-settings: \"liga\";',\n ' -webkit-font-feature-settings: \"liga\";',\n ' font-variation-settings: \"FILL\" var(--rs-icon-fill), \"wght\" var(--rs-icon-weight), \"GRAD\" var(--rs-icon-grade), \"opsz\" var(--rs-icon-optical-size);',\n \" font-weight: 400;\",\n \" justify-content: center;\",\n \" direction: ltr;\",\n \" letter-spacing: normal;\",\n \" line-height: 1;\",\n \" text-transform: none;\",\n \" user-select: none;\",\n \" white-space: nowrap;\",\n \" word-wrap: normal;\",\n \"}\",\n `.rs-icon--rounded { font-family: \"${familyFontNames.rounded}\"; }`,\n `.rs-icon--sharp { font-family: \"${familyFontNames.sharp}\"; }`,\n \".rs-icon--prime::before { content: var(--rs-icon-content); }\",\n );\n\n const names = new Set<string>();\n\n for (const family of families) {\n for (const name of usages.get(family) ?? []) {\n names.add(name);\n }\n }\n\n for (const name of [...names].sort()) {\n lines.push(`.rs-icon-${name} { --rs-icon-content: \"${name}\"; }`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function buildMaterialSymbolsHtmlTags(\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n): HtmlTagDescriptor[] {\n const tags: HtmlTagDescriptor[] = [];\n\n if (options.preload ?? defaultPreload) {\n for (const font of assets.fonts) {\n tags.push({\n attrs: {\n as: \"font\",\n crossorigin: \"\",\n href: font.href,\n rel: \"preload\",\n type: \"font/woff2\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n }\n }\n\n tags.push({\n attrs: {\n href: assets.cssHref,\n rel: \"stylesheet\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n\n return tags;\n}\n\nexport function injectMaterialSymbolsHtmlLinks(\n html: string,\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n) {\n const links = buildMaterialSymbolsHtmlTags(assets, options)\n .map(formatHtmlLinkTag)\n .filter((link) => !html.includes(`href=\"${getLinkHref(link)}\"`));\n\n return links.length === 0\n ? html\n : html.replace(\"</head>\", `${links.map((link) => ` ${link}`).join(\"\\n\")}\\n</head>`);\n}\n\nasync function generateFontAssets(\n usages: IconUsageMap,\n devMode: boolean,\n base: string,\n): Promise<GeneratedFontAsset[]> {\n const subsetFont = (await import(\"subset-font\")).default;\n const fonts: GeneratedFontAsset[] = [];\n\n for (const family of families) {\n const names = [...(usages.get(family) ?? [])].sort();\n\n if (names.length === 0) {\n continue;\n }\n\n const sourcePath = resolveFontPath(family);\n const source = await readFile(sourcePath);\n const subset = await subsetFont(source, names.join(\" \"), {\n targetFormat: \"woff2\",\n });\n const hash = createHash(\"sha256\").update(subset).digest(\"hex\").slice(0, 8);\n const fileName = `rs-material-symbols-${family}-${hash}.woff2`;\n\n fonts.push({\n family,\n fileName,\n href: fontHref(fileName, devMode, base),\n source: subset,\n });\n }\n\n return fonts;\n}\n\nfunction resolveFontPath(family: RsIconFamily) {\n return require.resolve(\n `${familyPackages[family]}/files/material-symbols-${family}-latin-${familyFontVariants[family]}-normal.woff2`,\n );\n}\n\nfunction fontHref(fileName: string, devMode: boolean, base: string) {\n return devMode\n ? `/@robosophy-material-symbols/${fileName}`\n : withBase(base, `assets/${fileName}`);\n}\n\nfunction formatHtmlLinkTag(tag: HtmlTagDescriptor) {\n const attrs = Object.entries(tag.attrs ?? {})\n .map(([name, value]) => (value === \"\" ? name : `${name}=\"${value}\"`))\n .join(\" \");\n\n return `<${tag.tag}${attrs ? ` ${attrs}` : \"\"}>`;\n}\n\nfunction getLinkHref(link: string) {\n return link.match(/\\bhref=\"([^\"]+)\"/)?.[1] ?? \"\";\n}\n\nfunction collectFromSource(source: string, usages: IconUsageMap) {\n const rsIconTagPattern = /<RsIcon\\b([^>]*)>/g;\n let tagMatch: RegExpExecArray | null;\n\n while ((tagMatch = rsIconTagPattern.exec(source))) {\n const attrs = parseStaticAttributes(tagMatch[1] ?? \"\");\n const name = attrs.name ?? attrs[\":name\"];\n const family = toFamily(attrs.family ?? attrs[\":family\"]);\n\n if (name) {\n addUsage(usages, { family: family ?? defaultFamily, name: unwrapStaticValue(name) });\n }\n }\n\n const primeHelperPattern =\n /\\brsPrimeIcon\\(\\s*[\"']([a-z0-9_]+)[\"'](?:\\s*,\\s*\\{([^)]*)\\})?/g;\n let helperMatch: RegExpExecArray | null;\n\n while ((helperMatch = primeHelperPattern.exec(source))) {\n const family = toFamily(helperMatch[2]?.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/)?.[1]);\n addUsage(usages, {\n family: family ?? defaultFamily,\n name: helperMatch[1] ?? \"\",\n });\n }\n\n const objectIconPattern = /\\bicon\\s*:\\s*[\"']([a-z0-9_]+)[\"']/g;\n let objectMatch: RegExpExecArray | null;\n\n while ((objectMatch = objectIconPattern.exec(source))) {\n addUsage(usages, {\n family: defaultFamily,\n name: objectMatch[1] ?? \"\",\n });\n }\n}\n\nfunction parseStaticAttributes(source: string) {\n const attrs: Record<string, string> = {};\n const attrPattern = /([:@\\w-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n let match: RegExpExecArray | null;\n\n while ((match = attrPattern.exec(source))) {\n attrs[match[1] ?? \"\"] = match[2] ?? match[3] ?? \"\";\n }\n\n return attrs;\n}\n\nfunction unwrapStaticValue(value: string) {\n return value.replace(/^['\"](.+)['\"]$/, \"$1\");\n}\n\nfunction addUsage(usages: IconUsageMap, icon: { family?: RsIconFamily; name: string }) {\n const family = icon.family ?? defaultFamily;\n const name = icon.name.trim();\n\n if (!families.includes(family) || !iconNamePattern.test(name)) {\n return;\n }\n\n usages.get(family)?.add(name);\n}\n\nfunction toFamily(value?: string): RsIconFamily | undefined {\n const normalized = value ? unwrapStaticValue(value) : \"\";\n return families.includes(normalized as RsIconFamily)\n ? (normalized as RsIconFamily)\n : undefined;\n}\n\nfunction createUsageMap(): IconUsageMap {\n return new Map(families.map((family) => [family, new Set<string>()]));\n}\n\nasync function listSourceFiles(root: string): Promise<string[]> {\n try {\n const entries = await readdir(root, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(root, entry.name);\n\n if (entry.isDirectory()) {\n return skippedDirs.has(entry.name) ? [] : listSourceFiles(path);\n }\n\n return sourceExtensions.has(extname(entry.name)) ? [path] : [];\n }),\n );\n\n return files.flat();\n } catch {\n return [];\n }\n}\n\nfunction withBase(base: string, path: string) {\n const cleanBase = base.endsWith(\"/\") ? base : `${base}/`;\n return `${cleanBase}${path}`.replaceAll(`${sep}`, \"/\");\n}\n\nexport function formatDetectedMaterialSymbols(usages: IconUsageMap) {\n return families\n .map((family) => `${family}: ${[...(usages.get(family) ?? [])].sort().join(\", \")}`)\n .join(\"\\n\");\n}\n"],"names":["families","defaultFamily","iconNamePattern","sourceExtensions","skippedDirs","internalIconNames","familyFontNames","familyPackages","familyFontVariants","defaultFontDisplay","defaultPreload","require","createRequire","robosophyMaterialSymbols","options","config","resolvedConfig","assets","ensureGeneratedAssets","buildMaterialSymbolsHtmlTags","server","request","response","next","fileName","font","asset","error","_outputOptions","bundle","injectMaterialSymbolsHtmlLinks","usages","collectMaterialSymbolUsages","devMode","fonts","generateFontAssets","buildMaterialSymbolsCss","withBase","createUsageMap","name","family","addUsage","icon","roots","join","root","filePath","listSourceFiles","source","readFile","collectFromSource","fontDisplay","lines","fontUrl","names","tags","html","links","formatHtmlLinkTag","link","getLinkHref","base","subsetFont","sourcePath","resolveFontPath","subset","hash","createHash","fontHref","tag","attrs","value","rsIconTagPattern","tagMatch","parseStaticAttributes","toFamily","unwrapStaticValue","primeHelperPattern","helperMatch","objectIconPattern","objectMatch","attrPattern","match","normalized","entries","readdir","entry","path","extname","sep","formatDetectedMaterialSymbols"],"mappings":"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"}
|