@productivemark/snipcss 1.0.0

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.
Files changed (117) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +10 -0
  3. package/.mcp.json +8 -0
  4. package/dist/auth/config-manager.d.ts +13 -0
  5. package/dist/auth/config-manager.d.ts.map +1 -0
  6. package/dist/auth/config-manager.js +48 -0
  7. package/dist/auth/config-manager.js.map +1 -0
  8. package/dist/auth/usage-gate.d.ts +13 -0
  9. package/dist/auth/usage-gate.d.ts.map +1 -0
  10. package/dist/auth/usage-gate.js +69 -0
  11. package/dist/auth/usage-gate.js.map +1 -0
  12. package/dist/browser/browser-manager.d.ts +15 -0
  13. package/dist/browser/browser-manager.d.ts.map +1 -0
  14. package/dist/browser/browser-manager.js +61 -0
  15. package/dist/browser/browser-manager.js.map +1 -0
  16. package/dist/browser/viewport-manager.d.ts +8 -0
  17. package/dist/browser/viewport-manager.d.ts.map +1 -0
  18. package/dist/browser/viewport-manager.js +50 -0
  19. package/dist/browser/viewport-manager.js.map +1 -0
  20. package/dist/extraction/css-variable-resolver.d.ts +27 -0
  21. package/dist/extraction/css-variable-resolver.d.ts.map +1 -0
  22. package/dist/extraction/css-variable-resolver.js +105 -0
  23. package/dist/extraction/css-variable-resolver.js.map +1 -0
  24. package/dist/extraction/dom-labeler.d.ts +26 -0
  25. package/dist/extraction/dom-labeler.d.ts.map +1 -0
  26. package/dist/extraction/dom-labeler.js +124 -0
  27. package/dist/extraction/dom-labeler.js.map +1 -0
  28. package/dist/extraction/element-discovery.d.ts +59 -0
  29. package/dist/extraction/element-discovery.d.ts.map +1 -0
  30. package/dist/extraction/element-discovery.js +525 -0
  31. package/dist/extraction/element-discovery.js.map +1 -0
  32. package/dist/extraction/extraction-pipeline.d.ts +26 -0
  33. package/dist/extraction/extraction-pipeline.d.ts.map +1 -0
  34. package/dist/extraction/extraction-pipeline.js +200 -0
  35. package/dist/extraction/extraction-pipeline.js.map +1 -0
  36. package/dist/extraction/font-collector.d.ts +26 -0
  37. package/dist/extraction/font-collector.d.ts.map +1 -0
  38. package/dist/extraction/font-collector.js +160 -0
  39. package/dist/extraction/font-collector.js.map +1 -0
  40. package/dist/extraction/html-cleaner.d.ts +16 -0
  41. package/dist/extraction/html-cleaner.d.ts.map +1 -0
  42. package/dist/extraction/html-cleaner.js +149 -0
  43. package/dist/extraction/html-cleaner.js.map +1 -0
  44. package/dist/extraction/keyframe-collector.d.ts +16 -0
  45. package/dist/extraction/keyframe-collector.d.ts.map +1 -0
  46. package/dist/extraction/keyframe-collector.js +62 -0
  47. package/dist/extraction/keyframe-collector.js.map +1 -0
  48. package/dist/extraction/pseudo-state-handler.d.ts +36 -0
  49. package/dist/extraction/pseudo-state-handler.d.ts.map +1 -0
  50. package/dist/extraction/pseudo-state-handler.js +210 -0
  51. package/dist/extraction/pseudo-state-handler.js.map +1 -0
  52. package/dist/extraction/result-builder.d.ts +25 -0
  53. package/dist/extraction/result-builder.d.ts.map +1 -0
  54. package/dist/extraction/result-builder.js +136 -0
  55. package/dist/extraction/result-builder.js.map +1 -0
  56. package/dist/extraction/rule-deduplicator.d.ts +39 -0
  57. package/dist/extraction/rule-deduplicator.d.ts.map +1 -0
  58. package/dist/extraction/rule-deduplicator.js +107 -0
  59. package/dist/extraction/rule-deduplicator.js.map +1 -0
  60. package/dist/extraction/selector-fixer.d.ts +25 -0
  61. package/dist/extraction/selector-fixer.d.ts.map +1 -0
  62. package/dist/extraction/selector-fixer.js +111 -0
  63. package/dist/extraction/selector-fixer.js.map +1 -0
  64. package/dist/extraction/specificity.d.ts +17 -0
  65. package/dist/extraction/specificity.d.ts.map +1 -0
  66. package/dist/extraction/specificity.js +88 -0
  67. package/dist/extraction/specificity.js.map +1 -0
  68. package/dist/extraction/style-matcher.d.ts +33 -0
  69. package/dist/extraction/style-matcher.d.ts.map +1 -0
  70. package/dist/extraction/style-matcher.js +199 -0
  71. package/dist/extraction/style-matcher.js.map +1 -0
  72. package/dist/extraction/stylesheet-collector.d.ts +33 -0
  73. package/dist/extraction/stylesheet-collector.d.ts.map +1 -0
  74. package/dist/extraction/stylesheet-collector.js +71 -0
  75. package/dist/extraction/stylesheet-collector.js.map +1 -0
  76. package/dist/index.d.ts +3 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +235 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/mcp-server.d.ts +3 -0
  81. package/dist/mcp-server.d.ts.map +1 -0
  82. package/dist/mcp-server.js +349 -0
  83. package/dist/mcp-server.js.map +1 -0
  84. package/dist/tailwind/css-to-tailwind.d.ts +17 -0
  85. package/dist/tailwind/css-to-tailwind.d.ts.map +1 -0
  86. package/dist/tailwind/css-to-tailwind.js +1583 -0
  87. package/dist/tailwind/css-to-tailwind.js.map +1 -0
  88. package/dist/tailwind/shorthand-expander.d.ts +27 -0
  89. package/dist/tailwind/shorthand-expander.d.ts.map +1 -0
  90. package/dist/tailwind/shorthand-expander.js +812 -0
  91. package/dist/tailwind/shorthand-expander.js.map +1 -0
  92. package/dist/tailwind/tailwind-converter.d.ts +35 -0
  93. package/dist/tailwind/tailwind-converter.d.ts.map +1 -0
  94. package/dist/tailwind/tailwind-converter.js +1223 -0
  95. package/dist/tailwind/tailwind-converter.js.map +1 -0
  96. package/dist/tailwind/tailwind-helpers.d.ts +95 -0
  97. package/dist/tailwind/tailwind-helpers.d.ts.map +1 -0
  98. package/dist/tailwind/tailwind-helpers.js +593 -0
  99. package/dist/tailwind/tailwind-helpers.js.map +1 -0
  100. package/dist/tailwind/tailwind-reducer.d.ts +36 -0
  101. package/dist/tailwind/tailwind-reducer.d.ts.map +1 -0
  102. package/dist/tailwind/tailwind-reducer.js +189 -0
  103. package/dist/tailwind/tailwind-reducer.js.map +1 -0
  104. package/dist/types/index.d.ts +239 -0
  105. package/dist/types/index.d.ts.map +1 -0
  106. package/dist/types/index.js +94 -0
  107. package/dist/types/index.js.map +1 -0
  108. package/dist/utils/helpers.d.ts +34 -0
  109. package/dist/utils/helpers.d.ts.map +1 -0
  110. package/dist/utils/helpers.js +120 -0
  111. package/dist/utils/helpers.js.map +1 -0
  112. package/dist/utils/parsel.d.ts +41 -0
  113. package/dist/utils/parsel.d.ts.map +1 -0
  114. package/dist/utils/parsel.js +314 -0
  115. package/dist/utils/parsel.js.map +1 -0
  116. package/package.json +41 -0
  117. package/skills/workflow/SKILL.md +95 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Tailwind class reduction and optimization.
3
+ * Port of tailwind_reduce.js (210 lines)
4
+ */
5
+ /**
6
+ * Reduce tailwind ranges to final class list with media prefixes.
7
+ * Sort by specificity, ruleIndex, and media_min ascending.
8
+ */
9
+ export function reduceTailwindClasses(ranges) {
10
+ ranges.sort((a, b) => {
11
+ if (a.score !== b.score) {
12
+ return b.score - a.score; // Higher specificity first
13
+ }
14
+ if (a.ruleIndex !== b.ruleIndex) {
15
+ return b.ruleIndex - a.ruleIndex; // Later rules first
16
+ }
17
+ return a.media_min - b.media_min; // Smaller media_min first
18
+ });
19
+ const tailwindClasses = [];
20
+ for (const range of ranges) {
21
+ let mediaPrefix = '';
22
+ if (range.media_min > -1) {
23
+ mediaPrefix = getMediaPrefixForMin(range.media_min);
24
+ }
25
+ for (const tailClass of range.tailwind_classes) {
26
+ if (mediaPrefix) {
27
+ tailwindClasses.push(`${mediaPrefix}:${tailClass}`);
28
+ }
29
+ else {
30
+ tailwindClasses.push(tailClass);
31
+ }
32
+ }
33
+ }
34
+ // Reverse to ensure correct order for CSS application
35
+ tailwindClasses.reverse();
36
+ return tailwindClasses;
37
+ }
38
+ /**
39
+ * Map pixel min-width to Tailwind breakpoint prefix.
40
+ */
41
+ export function getMediaPrefixForMin(media_min) {
42
+ const breakpoints = {
43
+ 640: 'sm',
44
+ 768: 'md',
45
+ 1024: 'lg',
46
+ 1280: 'xl',
47
+ 1536: '2xl',
48
+ };
49
+ if (breakpoints[media_min]) {
50
+ return breakpoints[media_min];
51
+ }
52
+ else if (media_min > -1) {
53
+ return `min-[${media_min}px]`;
54
+ }
55
+ return '';
56
+ }
57
+ /**
58
+ * Group styles by their media range (min-max pair).
59
+ */
60
+ export function groupStylesByMediaRange(propSpecifityWithMediaVals) {
61
+ const mediaGroups = {};
62
+ for (const prop in propSpecifityWithMediaVals) {
63
+ propSpecifityWithMediaVals[prop].forEach(styleObj => {
64
+ const key = `${styleObj.media_min}-${styleObj.media_max}`;
65
+ if (!mediaGroups[key]) {
66
+ mediaGroups[key] = [];
67
+ }
68
+ mediaGroups[key].push({ ...styleObj, prop });
69
+ });
70
+ }
71
+ return mediaGroups;
72
+ }
73
+ /**
74
+ * Merge padding-left/right into padding-x, padding-top/bottom into padding-y,
75
+ * and same for margins, when the values match.
76
+ */
77
+ export function updatePropSpecifityWithMergedProperties(propSpecifityWithMediaVals) {
78
+ const mediaGroups = groupStylesByMediaRange(propSpecifityWithMediaVals);
79
+ const updatedProps = {};
80
+ for (const mediaKey in mediaGroups) {
81
+ const group = mediaGroups[mediaKey];
82
+ const mergedProps = mergePropertiesInGroup(group);
83
+ for (const prop in mergedProps) {
84
+ if (!updatedProps[prop]) {
85
+ updatedProps[prop] = [];
86
+ }
87
+ updatedProps[prop].push(...mergedProps[prop]);
88
+ }
89
+ }
90
+ return updatedProps;
91
+ }
92
+ /**
93
+ * Within a single media range group, merge matching horizontal/vertical
94
+ * padding and margin properties.
95
+ */
96
+ function mergePropertiesInGroup(group) {
97
+ const merged = {};
98
+ const propValues = {};
99
+ // Collect properties and their corresponding style objects
100
+ group.forEach(item => {
101
+ const { prop } = item;
102
+ if (!propValues[prop]) {
103
+ propValues[prop] = [];
104
+ }
105
+ propValues[prop].push({ ...item });
106
+ });
107
+ const props = Object.keys(propValues);
108
+ // Helper function to extract value from Tailwind class
109
+ function extractValue(tailwindClass) {
110
+ const match = tailwindClass.match(/^[a-zA-Z\-]+([\s\S]+)$/);
111
+ if (match) {
112
+ let extraVal = '';
113
+ if (tailwindClass.indexOf(':') >= 0) {
114
+ const classSplitArr = tailwindClass.split(':');
115
+ classSplitArr.pop();
116
+ extraVal = classSplitArr.join();
117
+ }
118
+ return extraVal + match[1];
119
+ }
120
+ return null;
121
+ }
122
+ // Helper function to check if two properties have the same values
123
+ function haveSameValues(propA, propB) {
124
+ const valuesA = propValues[propA].map(item => extractValue(item.tailwind_classes[0]));
125
+ const valuesB = propValues[propB].map(item => extractValue(item.tailwind_classes[0]));
126
+ return JSON.stringify(valuesA) === JSON.stringify(valuesB);
127
+ }
128
+ // Merge horizontal paddings
129
+ if (props.includes('padding-left') && props.includes('padding-right')) {
130
+ if (haveSameValues('padding-left', 'padding-right')) {
131
+ const sampleTailwindClass = propValues['padding-left'][0].tailwind_classes[0];
132
+ if (!sampleTailwindClass.includes('-auto')) {
133
+ const newProp = 'padding-x';
134
+ merged[newProp] = propValues['padding-left'].map(item => ({
135
+ ...item,
136
+ prop: newProp,
137
+ tailwind_classes: item.tailwind_classes.map(cls => cls.replace(/^pl-/, 'px-')),
138
+ }));
139
+ delete propValues['padding-left'];
140
+ delete propValues['padding-right'];
141
+ }
142
+ }
143
+ }
144
+ // Merge vertical paddings
145
+ if (props.includes('padding-top') && props.includes('padding-bottom')) {
146
+ if (haveSameValues('padding-top', 'padding-bottom')) {
147
+ const newProp = 'padding-y';
148
+ merged[newProp] = propValues['padding-top'].map(item => ({
149
+ ...item,
150
+ prop: newProp,
151
+ tailwind_classes: item.tailwind_classes.map(cls => cls.replace(/^pt-/, 'py-')),
152
+ }));
153
+ delete propValues['padding-top'];
154
+ delete propValues['padding-bottom'];
155
+ }
156
+ }
157
+ // Merge horizontal margins
158
+ if (props.includes('margin-left') && props.includes('margin-right')) {
159
+ if (haveSameValues('margin-left', 'margin-right')) {
160
+ const newProp = 'margin-x';
161
+ merged[newProp] = propValues['margin-left'].map(item => ({
162
+ ...item,
163
+ prop: newProp,
164
+ tailwind_classes: item.tailwind_classes.map(cls => cls.replace(/^ml-/, 'mx-')),
165
+ }));
166
+ delete propValues['margin-left'];
167
+ delete propValues['margin-right'];
168
+ }
169
+ }
170
+ // Merge vertical margins
171
+ if (props.includes('margin-top') && props.includes('margin-bottom')) {
172
+ if (haveSameValues('margin-top', 'margin-bottom')) {
173
+ const newProp = 'margin-y';
174
+ merged[newProp] = propValues['margin-top'].map(item => ({
175
+ ...item,
176
+ prop: newProp,
177
+ tailwind_classes: item.tailwind_classes.map(cls => cls.replace(/^mt-/, 'my-')),
178
+ }));
179
+ delete propValues['margin-top'];
180
+ delete propValues['margin-bottom'];
181
+ }
182
+ }
183
+ // Combine remaining properties
184
+ Object.keys(propValues).forEach(prop => {
185
+ merged[prop] = propValues[prop];
186
+ });
187
+ return merged;
188
+ }
189
+ //# sourceMappingURL=tailwind-reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-reducer.js","sourceRoot":"","sources":["../../src/tailwind/tailwind-reducer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,239 @@
1
+ export interface CDPNode {
2
+ nodeId: number;
3
+ backendNodeId?: number;
4
+ nodeType?: number;
5
+ nodeName?: string;
6
+ localName?: string;
7
+ nodeValue?: string;
8
+ childNodeCount?: number;
9
+ children?: CDPNode[];
10
+ attributes?: string[];
11
+ }
12
+ export interface CDPDocument {
13
+ root: CDPNode;
14
+ }
15
+ export interface CDPCSSProperty {
16
+ name: string;
17
+ value: string;
18
+ important?: boolean;
19
+ implicit?: boolean;
20
+ text?: string;
21
+ parsedOk?: boolean;
22
+ disabled?: boolean;
23
+ range?: CDPSourceRange;
24
+ }
25
+ export interface CDPSourceRange {
26
+ startLine: number;
27
+ startColumn: number;
28
+ endLine: number;
29
+ endColumn: number;
30
+ }
31
+ export interface CDPCSSStyle {
32
+ styleSheetId?: string;
33
+ cssProperties: CDPCSSProperty[];
34
+ shorthandEntries?: {
35
+ name: string;
36
+ value: string;
37
+ important?: boolean;
38
+ }[];
39
+ cssText?: string;
40
+ range?: CDPSourceRange;
41
+ }
42
+ export interface CDPSelectorList {
43
+ selectors: {
44
+ text: string;
45
+ range?: CDPSourceRange;
46
+ specificity?: {
47
+ a: number;
48
+ b: number;
49
+ c: number;
50
+ };
51
+ }[];
52
+ text: string;
53
+ }
54
+ export interface CDPCSSRule {
55
+ styleSheetId?: string;
56
+ selectorList: CDPSelectorList;
57
+ style: CDPCSSStyle;
58
+ origin: 'injected' | 'user-agent' | 'inspector' | 'regular';
59
+ media?: CDPCSSMedia[];
60
+ }
61
+ export interface CDPCSSMedia {
62
+ text: string;
63
+ source: string;
64
+ sourceURL?: string;
65
+ range?: CDPSourceRange;
66
+ styleSheetId?: string;
67
+ mediaList?: {
68
+ expressions: any[];
69
+ active: boolean;
70
+ }[];
71
+ }
72
+ export interface CDPRuleMatch {
73
+ rule: CDPCSSRule;
74
+ matchingSelectors: number[];
75
+ }
76
+ export interface CDPInheritedStyle {
77
+ inlineStyle?: CDPCSSStyle;
78
+ matchedCSSRules: CDPRuleMatch[];
79
+ }
80
+ export interface CDPMatchedStyles {
81
+ inlineStyle?: CDPCSSStyle;
82
+ attributesStyle?: CDPCSSStyle;
83
+ matchedCSSRules: CDPRuleMatch[];
84
+ inherited: CDPInheritedStyle[];
85
+ pseudoElements: {
86
+ pseudoType: string;
87
+ pseudoIdentifier?: string;
88
+ matches: CDPRuleMatch[];
89
+ }[];
90
+ cssKeyframesRules?: {
91
+ animationName: {
92
+ text: string;
93
+ };
94
+ keyframes: {
95
+ keyText: {
96
+ text: string;
97
+ };
98
+ style: CDPCSSStyle;
99
+ }[];
100
+ }[];
101
+ }
102
+ export interface CDPStylesheet {
103
+ styleSheetId: string;
104
+ frameId: string;
105
+ sourceURL: string;
106
+ origin: string;
107
+ title?: string;
108
+ ownerNode?: number;
109
+ disabled?: boolean;
110
+ isInline?: boolean;
111
+ isMutable?: boolean;
112
+ isConstructed?: boolean;
113
+ length?: number;
114
+ startLine?: number;
115
+ startColumn?: number;
116
+ }
117
+ export interface StylesheetInfo {
118
+ stylesheet_id: string;
119
+ source_url: string;
120
+ frame_id: string;
121
+ origin: string;
122
+ is_inline: boolean;
123
+ text?: string;
124
+ }
125
+ export interface SnippedRule {
126
+ selector: string;
127
+ body: string;
128
+ media: string;
129
+ classname: string;
130
+ stylesheet_id: string;
131
+ origin: string;
132
+ is_inherited: boolean;
133
+ other_inherited?: boolean;
134
+ is_pseudo_element?: boolean;
135
+ pseudo_type?: string;
136
+ is_hover?: boolean;
137
+ distance?: number;
138
+ specificity_score?: number;
139
+ viewport?: string;
140
+ }
141
+ export interface CssVarDefinition {
142
+ key: string;
143
+ label: string;
144
+ value: string;
145
+ media: string;
146
+ selector: string;
147
+ source: string;
148
+ }
149
+ export interface FontData {
150
+ font_family: string;
151
+ font_url: string;
152
+ font_format?: string;
153
+ font_weight?: string;
154
+ font_style?: string;
155
+ font_display?: string;
156
+ full_rule?: string;
157
+ }
158
+ export interface MatchingFinalRule {
159
+ selector: string;
160
+ body: string;
161
+ media: string;
162
+ specificity: number;
163
+ is_inherited: boolean;
164
+ distance?: number;
165
+ }
166
+ export interface MatchingFinalRuleEntry {
167
+ indices: number[];
168
+ selectors: string[];
169
+ bodies: string[];
170
+ media_queries: string[];
171
+ matching_parts: string[][];
172
+ contain_type: string[];
173
+ inherited_type: string[];
174
+ inherited_classes: any[];
175
+ invalid_pseudos: boolean[];
176
+ }
177
+ export interface LabelResult {
178
+ allClassnamesArr: string[];
179
+ allElementOuterHtml: string;
180
+ allLabelOuterHtml: string;
181
+ rootSelector: string;
182
+ rootClassname: string;
183
+ }
184
+ export interface ExtractionOptions {
185
+ viewport?: 'all' | 'desktop' | 'tablet' | 'mobile' | string;
186
+ customWidth?: number;
187
+ resolveVariables?: boolean;
188
+ includeHoverStates?: boolean;
189
+ removeUnusedClasses?: boolean;
190
+ removeUnusedAttributes?: boolean;
191
+ }
192
+ export interface ExtractionResult {
193
+ html: string;
194
+ css: string;
195
+ tailwindHtml: string;
196
+ tailwindBodyClasses: string;
197
+ fonts: FontData[];
198
+ cssVariables: Record<string, string>;
199
+ }
200
+ export interface ViewportConfig {
201
+ name: string;
202
+ width: number;
203
+ height: number;
204
+ deviceScaleFactor?: number;
205
+ mobile?: boolean;
206
+ userAgent?: string;
207
+ }
208
+ export declare class ExtractionContext {
209
+ snippedArr: SnippedRule[];
210
+ stylesheetArr: StylesheetInfo[];
211
+ customfontsArr: FontData[];
212
+ cssvarUsedArr: string[];
213
+ cssvarDefinedArr: Record<string, CssVarDefinition[]>;
214
+ cssvarAllArr: Record<string, string>;
215
+ cssvarResolvedValues: Record<string, string>;
216
+ matchingFinalRules: Record<string, MatchingFinalRuleEntry>;
217
+ selectorSpecifityScore: Record<string, number>;
218
+ selectorFixArr: Record<string, string>;
219
+ selectorPartialFixArr: Record<string, boolean>;
220
+ selectorContainedArr: Record<string, boolean>;
221
+ selectorInheritedClassesArr: string[];
222
+ animationKeyframesArr: Record<string, any>;
223
+ importfontsArr: string[];
224
+ cssfontsArr: string[];
225
+ usedFontArr: string[];
226
+ usedFontObjectArr: any[];
227
+ svgFilterReferences: string[];
228
+ allClassnamesArr: string[];
229
+ noPseudoSelectors: Record<string, string>;
230
+ existingQueryRanges: Record<string, boolean>;
231
+ siteUrl: string;
232
+ reset(): void;
233
+ }
234
+ export declare const INHERITED_RULES: string[];
235
+ export declare const VENDOR_PREFIXES: string[];
236
+ export declare const ICON_SELECTOR_PATTERNS: RegExp[];
237
+ export declare const ICON_FONT_FAMILY_NAMES: string[];
238
+ export declare const DEFAULT_VIEWPORTS: Record<string, ViewportConfig>;
239
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ // CDP response types
2
+ // Extraction context - replaces all global state from snipbackground.js
3
+ export class ExtractionContext {
4
+ snippedArr = [];
5
+ stylesheetArr = [];
6
+ customfontsArr = [];
7
+ cssvarUsedArr = [];
8
+ cssvarDefinedArr = {};
9
+ cssvarAllArr = {};
10
+ cssvarResolvedValues = {};
11
+ matchingFinalRules = {};
12
+ selectorSpecifityScore = {};
13
+ selectorFixArr = {};
14
+ selectorPartialFixArr = {};
15
+ selectorContainedArr = {};
16
+ selectorInheritedClassesArr = [];
17
+ animationKeyframesArr = {};
18
+ importfontsArr = [];
19
+ cssfontsArr = [];
20
+ usedFontArr = [];
21
+ usedFontObjectArr = [];
22
+ svgFilterReferences = [];
23
+ allClassnamesArr = [];
24
+ noPseudoSelectors = {};
25
+ existingQueryRanges = {};
26
+ siteUrl = '';
27
+ reset() {
28
+ this.snippedArr = [];
29
+ this.stylesheetArr = [];
30
+ this.customfontsArr = [];
31
+ this.cssvarUsedArr = [];
32
+ this.cssvarDefinedArr = {};
33
+ this.cssvarAllArr = {};
34
+ this.cssvarResolvedValues = {};
35
+ this.matchingFinalRules = {};
36
+ this.selectorSpecifityScore = {};
37
+ this.selectorFixArr = {};
38
+ this.selectorPartialFixArr = {};
39
+ this.selectorContainedArr = {};
40
+ this.selectorInheritedClassesArr = [];
41
+ this.animationKeyframesArr = {};
42
+ this.importfontsArr = [];
43
+ this.cssfontsArr = [];
44
+ this.usedFontArr = [];
45
+ this.usedFontObjectArr = [];
46
+ this.svgFilterReferences = [];
47
+ this.allClassnamesArr = [];
48
+ this.noPseudoSelectors = {};
49
+ this.existingQueryRanges = {};
50
+ this.siteUrl = '';
51
+ }
52
+ }
53
+ // Constants from snipbackground.js
54
+ export const INHERITED_RULES = [
55
+ 'azimuth', 'border-collapse', 'border-spacing', 'caption-side', 'color',
56
+ 'cursor', 'direction', 'elevation', 'empty-cells', 'font-family',
57
+ 'font-size', 'font-style', 'font-variant', 'font-weight', 'font',
58
+ 'letter-spacing', 'line-height', 'list-style-image', 'list-style-position',
59
+ 'list-style-type', 'list-style', 'orphans', 'pitch-range', 'pitch quotes',
60
+ 'richness', 'speak-header', 'speak-numeral', 'speak-punctuation', 'speak',
61
+ 'speech-rate', 'stress', 'text-align', 'text-indent', 'text-transform',
62
+ 'visibility', 'voice-family', 'volume', 'white-space', 'widows',
63
+ 'word-spacing', 'background-image', 'background', 'background-color'
64
+ ];
65
+ export const VENDOR_PREFIXES = ['-webkit-', '-moz-', '-ms-', '-o-'];
66
+ export const ICON_SELECTOR_PATTERNS = [
67
+ /\.fa[srldb]?(?:\s|,|:|{|\[|$)/,
68
+ /\.fa-/,
69
+ /\.ti(?:\s|,|:|{|\[|$)/,
70
+ /\.ti-/,
71
+ /\.bi(?:\s|,|:|{|\[|$)/,
72
+ /\.bi-/,
73
+ /\.material-icons/,
74
+ /\.glyphicon/,
75
+ /\.icon-/,
76
+ /\.icofont-/,
77
+ /\.ri-/,
78
+ /\.bx-?/,
79
+ /\.la-?/,
80
+ ];
81
+ export const ICON_FONT_FAMILY_NAMES = [
82
+ 'font awesome', 'fontawesome', 'tabler', 'bootstrap-icons',
83
+ 'material icons', 'glyphicons', 'icomoon', 'icofont',
84
+ 'remixicon', 'boxicons', 'line awesome'
85
+ ];
86
+ export const DEFAULT_VIEWPORTS = {
87
+ default: { name: 'default', width: 1366, height: 768 },
88
+ iphonexs: { name: 'iphonexs', width: 375, height: 812, deviceScaleFactor: 3, mobile: true, userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1' },
89
+ ipad: { name: 'ipad', width: 768, height: 1024, deviceScaleFactor: 2, mobile: true, userAgent: 'Mozilla/5.0 (iPad; CPU OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1' },
90
+ ipadlandscape: { name: 'ipadlandscape', width: 1024, height: 768, deviceScaleFactor: 2, mobile: true, userAgent: 'Mozilla/5.0 (iPad; CPU OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1' },
91
+ pixel2: { name: 'pixel2', width: 411, height: 731, deviceScaleFactor: 2.625, mobile: true, userAgent: 'Mozilla/5.0 (Linux; Android 13; Pixel 2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36' },
92
+ largedesktop: { name: 'largedesktop', width: 1920, height: 1080 },
93
+ };
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare function escapeRegExp(str: string): string;
2
+ export declare function randomLetters(length: number): string;
3
+ export declare function getTimestamp(): string;
4
+ /**
5
+ * Split a string by a separator but not inside parentheses
6
+ * Port of splitNoParen from snipbackground.js
7
+ */
8
+ export declare function splitNoParen(str: string, separator: string): string[];
9
+ /**
10
+ * Check if a string looks like a URL
11
+ */
12
+ export declare function isUrl(str: string): boolean;
13
+ /**
14
+ * Resolve a relative URL against a base URL
15
+ */
16
+ export declare function resolveUrl(relative: string, base: string): string;
17
+ /**
18
+ * Strip snipcss marker classes from HTML
19
+ */
20
+ export declare function stripMarkerClasses(html: string): string;
21
+ /**
22
+ * Check if a CSS selector matches icon font patterns
23
+ */
24
+ export declare function isIconFontSelector(selector: string): boolean;
25
+ /**
26
+ * Check if CSS body contains icon font-family
27
+ */
28
+ export declare function hasIconFontFamily(body: string): boolean;
29
+ export declare function isIconFontRule(selector: string, body: string): boolean;
30
+ /**
31
+ * Delay helper
32
+ */
33
+ export declare function delay(ms: number): Promise<void>;
34
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBrE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAavD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}