├── dist ├── css │ ├── date-handler.css │ ├── webflow-detect.css │ ├── webflow-kiosk.css │ ├── encoded-email.css │ ├── webflow-demo.css │ ├── util.css │ ├── date-handler.css.map │ ├── webflow-detect.css.map │ ├── element-groups.css │ ├── util.css.map │ ├── webflow-demo.css.map │ ├── webflow-kiosk.css.map │ ├── encoded-email.css.map │ ├── modal.css.map │ ├── element-groups.css.map │ ├── webflow-track.css.map │ ├── layouts.css.map │ ├── svg-embeds.css.map │ ├── webflow-track.css │ ├── svg embeds.css.map │ ├── form-select.css.map │ ├── webflow-membership.css.map │ ├── webflow-fixup.css.map │ ├── webflow-format.css.map │ ├── preload.css.map │ ├── markdown.css.map │ ├── webflow-accordion.css.map │ ├── webflow-modal.css.map │ ├── webflow-ui.css.map │ ├── webflow-util.css.map │ ├── svg-embeds.css │ ├── webflow-form.css.map │ ├── modal.css │ ├── webflow-membership.css │ ├── layouts.css │ ├── input-range-slider.css.map │ ├── svg embeds.css │ ├── webflow-elements.css.map │ ├── webflow-gallery.css.map │ ├── webflow-video.css.map │ ├── webflow-embed.css.map │ ├── webflow-fixup.css │ ├── style.css.map │ ├── webflow-data.css.map │ ├── form-select.css │ ├── webflow-form.css │ ├── webflow-ui.css │ ├── webflow-accordion.css │ ├── markdown.css │ ├── webflow-util.css │ ├── webflow-format.css │ ├── input-range-slider.css │ ├── nested-list.css.map │ ├── preload.css │ ├── webflow-gallery.css │ ├── webflow-elements.css │ ├── webflow-modal.css │ ├── style.css │ ├── limit-items-v1.css.map │ ├── github-gist.css.map │ ├── webflow-embed.css │ ├── webflow-video.css │ └── webflow-data.css ├── webflow-commerce │ ├── webflow.js │ └── webflow.js.map ├── webflow-detect │ ├── geo-handlers │ │ ├── ipify.js │ │ ├── ipify.js.map │ │ ├── geo-handler-base.js │ │ ├── ip-info.js │ │ └── geo-handler-base.js.map │ └── routing-rules.js ├── webflow-localization │ ├── webflow.js │ └── webflow.js.map ├── webflow-membership │ ├── internal │ │ ├── usys.js │ │ ├── usys.js.map │ │ ├── logout.js │ │ ├── login.js │ │ └── prelogin.js │ ├── hyperflow.js │ └── access-groups.js ├── webflow-core │ ├── IDeckNavigation.js │ ├── IDeckNavigation.js.map │ ├── events │ │ ├── actions │ │ │ ├── actionBase.js │ │ │ ├── actionScriptBase.js │ │ │ └── click.js │ │ └── triggers │ │ │ ├── triggerBase.js │ │ │ └── click.js │ ├── webflow-editor.js │ └── scripts.js ├── version.js ├── version.js.map ├── webflow-seo │ └── json-ld │ │ ├── image-object.js │ │ ├── organization.js │ │ ├── entry-point.js │ │ ├── person.js │ │ ├── profile-page.js │ │ ├── image-object.js.map │ │ ├── entry-point.js.map │ │ ├── person.js.map │ │ ├── organization.js.map │ │ ├── search-action.js │ │ ├── profile-page.js.map │ │ └── search-action.js.map ├── webflow-form │ ├── form-data-binder.js │ ├── checkbox.js │ ├── textarea.js │ └── checkbox.js.map ├── webflow-ix.js ├── webflow-data-collectionlist.js ├── webflow-data │ ├── webflow-collectionlist-data.js │ ├── google-sheet-data.js │ ├── github-data.js │ ├── webflow-collectionlist-data.js.map │ ├── database.js │ └── github-data.js.map ├── webflow-url │ ├── targetLinks.js │ └── relativeLinkFixup.js ├── utils │ ├── utm-link.js │ └── utm-link.js.map ├── webflow-cro │ └── source.js ├── webflow-data-collectionlist.js.map ├── storage-utils.js ├── webflow-finsweet │ └── fs-load.js ├── webflow-finsweet.js ├── webflow-video │ └── events │ │ └── actions │ │ └── video-play.js ├── webflow-modal │ └── actions │ │ └── modal-open.js └── storage-utils.js.map ├── src ├── webflow-format │ ├── date-handler.scss │ └── date-handler │ │ └── moment-handler.ts ├── css │ ├── webflow-kiosk.scss │ ├── webflow-gallery.scss │ ├── util.scss │ ├── webflow-detect.scss │ ├── webflow-richtext.scss │ ├── webflow-elements.scss │ ├── webflow-track.scss │ ├── webflow-demo.scss │ ├── webflow-form.scss │ ├── webflow-modal.scss │ ├── webflow-membership.scss │ ├── webflow-accordion.scss │ ├── webflow-ui.scss │ ├── webflow-util.scss │ ├── webflow-format.scss │ ├── webflow-fixup.scss │ ├── input-range-slider.scss │ ├── webflow-data.scss │ └── webflow-video.scss ├── webflow-html │ ├── encoded-email.scss │ ├── markdown.scss │ ├── sort.ts │ └── download-file.ts ├── version.ts ├── webflow-layout │ └── element-groups.scss ├── webflow-detect │ └── geo-handlers │ │ ├── ipify.ts │ │ ├── geo-handler-base.ts │ │ └── ip-info.ts ├── webflow-seo │ └── json-ld │ │ ├── image-object.ts │ │ ├── entry-point.ts │ │ ├── blog-posting.ts │ │ ├── person.ts │ │ ├── news-article.ts │ │ ├── organization.ts │ │ ├── search-action.ts │ │ ├── profile-page.ts │ │ ├── tech-article.ts │ │ ├── course.ts │ │ └── website.ts ├── webflow-richtext │ └── svg-embeds.scss ├── webflow-modal │ ├── modal.scss │ └── actions │ │ └── modal-open.ts ├── webflow-cache │ └── cache-item.ts ├── webflow-form │ ├── handler │ │ ├── basin-handler.ts │ │ ├── zapier-handler.ts │ │ └── success-handler.ts │ ├── form-select.scss │ ├── checkbox.ts │ └── textarea.ts ├── webflow-finsweet.ts ├── locode │ ├── webflow-forms-helper.js │ └── webflow-table-helper.js ├── webflow-core │ ├── IDeckNavigation.ts │ ├── preload.scss │ ├── designer.ts │ ├── events │ │ ├── actions │ │ │ ├── actionScriptBase.ts │ │ │ ├── click.ts │ │ │ ├── actionBase.ts │ │ │ └── alert.ts │ │ └── triggers │ │ │ ├── click.ts │ │ │ └── triggerBase.ts │ └── scripts.ts ├── webflow-data │ ├── webflow-collectionlist-data.ts │ ├── github-data.ts │ ├── database.ts │ └── google-sheet-data.ts ├── webflow-data-collectionlist.ts ├── nocode │ ├── webflow-kiosk.ts │ ├── webflow-hotkeys.ts │ ├── webflow-ui.ts │ ├── webflow-layout.ts │ ├── webflow-effects.ts │ ├── webflow-gallery.ts │ ├── webflow-calc.ts │ ├── webflow-demo.ts │ ├── webflow-html.ts │ ├── webflow-seo.ts │ ├── webflow-data.ts │ ├── webflow-modal.ts │ ├── webflow-format.ts │ ├── webflow-fixup.ts │ ├── webflow-404.ts │ ├── webflow-embed.ts │ └── webflow-video.ts ├── lib │ └── patterns │ │ └── email.js ├── webflow-effects │ └── effects │ │ ├── effect-handler.ts │ │ └── effect-handler-factory.ts ├── webflow-kiosk │ └── activity.ts ├── webflow-databind │ └── template │ │ ├── default-template-handler.ts │ │ └── handlebars-template-handler.ts ├── webflow-editor.ts ├── webflow-video │ ├── player-factory.ts │ └── events │ │ └── actions │ │ └── video-play.ts ├── storage-utils.ts ├── utils │ └── utm-link.ts ├── webflow-demo.ts ├── webflow-membership │ └── internal │ │ └── usys.ts ├── webflow-url │ └── targetLinks.ts ├── webflow-html-builder.ts └── webflow-ix.ts ├── favicon.png ├── compilerconfig.json ├── web.config ├── concept └── preloaders │ ├── style.css.map │ ├── style.css │ └── style.scss ├── tsconfig.json ├── LICENSE ├── custom-typings └── waypoint.d.ts ├── package.json ├── compilerconfig.json.defaults ├── README.md └── scripts └── esbuild.js /dist/css/date-handler.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/css/webflow-detect.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/webflow-format/date-handler.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /dist/css/webflow-kiosk.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SCSS for SA5 Kiosk library 3 | */ -------------------------------------------------------------------------------- /dist/css/encoded-email.css: -------------------------------------------------------------------------------- 1 | [wfu-email-encoded] { 2 | display: none; 3 | } -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sygnaltech/webflow-util/HEAD/favicon.png -------------------------------------------------------------------------------- /dist/css/webflow-demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * SCSS for Sygnal Webflow Util Demo library 3 | */ -------------------------------------------------------------------------------- /src/css/webflow-kiosk.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * SCSS for SA5 Kiosk library 4 | */ 5 | 6 | -------------------------------------------------------------------------------- /src/webflow-html/encoded-email.scss: -------------------------------------------------------------------------------- 1 | [wfu-email-encoded] { 2 | display: none; 3 | } 4 | -------------------------------------------------------------------------------- /dist/webflow-commerce/webflow.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | })(); 3 | //# sourceMappingURL=webflow.js.map 4 | -------------------------------------------------------------------------------- /dist/webflow-detect/geo-handlers/ipify.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | })(); 3 | //# sourceMappingURL=ipify.js.map 4 | -------------------------------------------------------------------------------- /dist/webflow-localization/webflow.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | })(); 3 | //# sourceMappingURL=webflow.js.map 4 | -------------------------------------------------------------------------------- /dist/webflow-membership/internal/usys.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | })(); 3 | //# sourceMappingURL=usys.js.map 4 | -------------------------------------------------------------------------------- /dist/webflow-core/IDeckNavigation.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | })(); 3 | //# sourceMappingURL=IDeckNavigation.js.map 4 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | 2 | export const VERSION = '5.8.9'; // Update this manually on each release 3 | 4 | 5 | -------------------------------------------------------------------------------- /dist/css/util.css: -------------------------------------------------------------------------------- 1 | /* 2 | * General SCSS for Sygnal Webflow Util library 3 | */ 4 | .hide { 5 | display: none; 6 | } -------------------------------------------------------------------------------- /dist/css/date-handler.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"date-handler.css"} -------------------------------------------------------------------------------- /src/css/webflow-gallery.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * SCSS for SA5 Gallery library 4 | */ 5 | 6 | @use '../webflow-core/preload'; -------------------------------------------------------------------------------- /dist/css/webflow-detect.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"webflow-detect.css"} -------------------------------------------------------------------------------- /dist/version.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/version.ts 3 | var VERSION = "5.8.9"; 4 | })(); 5 | //# sourceMappingURL=version.js.map 6 | -------------------------------------------------------------------------------- /dist/css/element-groups.css: -------------------------------------------------------------------------------- 1 | [wfu-element-name] { 2 | display: none; 3 | } 4 | 5 | [wfu-element-default] { 6 | display: block; 7 | } -------------------------------------------------------------------------------- /compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "dist/css/webflow-html.css", 4 | "inputFile": "dist/css/webflow-html.scss" 5 | } 6 | ] -------------------------------------------------------------------------------- /src/css/util.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * General SCSS for Sygnal Webflow Util library 4 | */ 5 | 6 | .hide { 7 | display: none; 8 | } 9 | 10 | -------------------------------------------------------------------------------- /dist/css/util.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/util.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;EACI","file":"util.css"} -------------------------------------------------------------------------------- /dist/webflow-commerce/webflow.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": [], 4 | "sourcesContent": [], 5 | "mappings": "", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/webflow-core/IDeckNavigation.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": [], 4 | "sourcesContent": [], 5 | "mappings": "", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/webflow-localization/webflow.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": [], 4 | "sourcesContent": [], 5 | "mappings": "", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/webflow-detect/geo-handlers/ipify.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": [], 4 | "sourcesContent": [], 5 | "mappings": "", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/webflow-membership/internal/usys.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": [], 4 | "sourcesContent": [], 5 | "mappings": "", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/css/webflow-demo.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-demo.scss"],"names":[],"mappings":"AACA;AAAA;AAAA","file":"webflow-demo.css"} -------------------------------------------------------------------------------- /dist/css/webflow-kiosk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-kiosk.scss"],"names":[],"mappings":"AACA;AAAA;AAAA","file":"webflow-kiosk.css"} -------------------------------------------------------------------------------- /dist/css/encoded-email.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-html/encoded-email.scss"],"names":[],"mappings":"AAAA;EACI","file":"encoded-email.css"} -------------------------------------------------------------------------------- /dist/css/modal.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-modal/modal.scss"],"names":[],"mappings":"AAEA;AAAA;AAAA;AAIA;EACE;;;AAGF","file":"modal.css"} -------------------------------------------------------------------------------- /dist/css/element-groups.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-layout/element-groups.scss"],"names":[],"mappings":"AACA;EACI;;;AAGJ;EACI","file":"element-groups.css"} -------------------------------------------------------------------------------- /src/css/webflow-detect.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | // Detect-specific elements 4 | // Geo 5 | // zone 6 | // country 7 | // city 8 | 9 | // 10 | 11 | 12 | // filter $geo. 13 | 14 | 15 | -------------------------------------------------------------------------------- /dist/css/webflow-track.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-track.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAMA;EACI;;;AAEJ;EACI","file":"webflow-track.css"} -------------------------------------------------------------------------------- /src/webflow-layout/element-groups.scss: -------------------------------------------------------------------------------- 1 | 2 | [wfu-element-name] { 3 | display: none; 4 | } 5 | 6 | [wfu-element-default] { 7 | display: block; // BUG: not element display type aware 8 | } -------------------------------------------------------------------------------- /dist/css/layouts.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-html/layouts.scss"],"names":[],"mappings":"AAEA;AAAA;AAAA;AASA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA","file":"layouts.css"} -------------------------------------------------------------------------------- /dist/css/svg-embeds.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-richtext/svg-embeds.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAOI;EACI;EACA;;AAEJ;EACI;EACA","file":"svg-embeds.css"} -------------------------------------------------------------------------------- /dist/css/webflow-track.css: -------------------------------------------------------------------------------- 1 | /* 2 | * SCSS for Sygnal Webflow Util Track library 3 | */ 4 | [wfu-show-tracked] { 5 | display: none; 6 | } 7 | 8 | [wfu-hide-tracked] { 9 | display: none; 10 | } -------------------------------------------------------------------------------- /dist/css/svg embeds.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-richtext/svg%20embeds.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAOI;EACI;EACA;;AAEJ;EACI;EACA","file":"svg%20embeds.css"} -------------------------------------------------------------------------------- /src/css/webflow-richtext.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @use '../webflow-richtext/nested-list.scss'; 5 | @use '../webflow-richtext/svg-embeds.scss'; 6 | @use '../webflow-richtext/github-gist.scss'; 7 | 8 | 9 | -------------------------------------------------------------------------------- /dist/css/form-select.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-form/form-select.scss"],"names":[],"mappings":"AACA;AAUA;AAOY;EACI;EACA;;AAQR;EACI;EACA;;AAEA;EACI;EACA","file":"form-select.css"} -------------------------------------------------------------------------------- /dist/css/webflow-membership.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-membership.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAMA;EACI;;;AAEJ;EACI;;;AAIJ;EACI","file":"webflow-membership.css"} -------------------------------------------------------------------------------- /dist/css/webflow-fixup.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-fixup.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;AAKA;EAEI;;;AAEJ;EACI;;;AAOJ;AAAA;AAAA;AAAA;AAAA","file":"webflow-fixup.css"} -------------------------------------------------------------------------------- /src/css/webflow-elements.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @use '../webflow-core/preload'; 5 | 6 | 7 | // Adjust caption position for videos 8 | iframe+.w-lightbox-caption { 9 | 10 | margin-bottom: -50px; 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /dist/css/webflow-format.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-format.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAIA;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI","file":"webflow-format.css"} -------------------------------------------------------------------------------- /dist/css/preload.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-core/preload.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EAEI;;;AAMJ;EAEI","file":"preload.css"} -------------------------------------------------------------------------------- /dist/css/markdown.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-html/markdown.scss"],"names":[],"mappings":"AAIA;EACE;;;AAKF;AAEI;AAoBA;;AAnBA;EAEI;EACA;;AAGJ;EACI;EACA;EAGA;;AAGJ;EACI;;AAKJ;EACI;EACA;EACA","file":"markdown.css"} -------------------------------------------------------------------------------- /dist/css/webflow-accordion.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-accordion.scss"],"names":[],"mappings":"AACA;AACA;;;AAGA;EACI;EACA;;;AAGJ;AACI;EACA;EACA;EACA;;;AAGJ;EACI;AACA;IACA;IACA","file":"webflow-accordion.css"} -------------------------------------------------------------------------------- /dist/css/webflow-modal.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-modal.scss","../../src/webflow-modal/modal.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;ACCA;AAAA;AAAA;AAIA;EACE;;;AAGF;ADAA;EAEI","file":"webflow-modal.css"} -------------------------------------------------------------------------------- /dist/css/webflow-ui.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-ui.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;AAEA;EACI;EACA;EACA;;;AAGA;EACI;EACA;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"webflow-ui.css"} -------------------------------------------------------------------------------- /dist/css/webflow-util.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-util.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;AAAA;AAEA;EACI;;;AAMJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI","file":"webflow-util.css"} -------------------------------------------------------------------------------- /dist/css/svg-embeds.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SA5 SVG Embeds 3 | */ 4 | [wfu-richtext-embed-svg] .w-embed:has(> svg) { 5 | padding: 20px; 6 | background-color: white; 7 | } 8 | [wfu-richtext-embed-svg] .w-embed > svg { 9 | width: 100%; 10 | height: auto; 11 | } -------------------------------------------------------------------------------- /dist/css/webflow-form.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-form.scss","../../src/webflow-form/form-select.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;ACAA;AAUA;AAOY;EACI;EACA;;AAQR;EACI;EACA;;AAEA;EACI;EACA","file":"webflow-form.css"} -------------------------------------------------------------------------------- /dist/version.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../src/version.ts"], 4 | "sourcesContent": ["\r\nexport const VERSION = '5.8.9'; // Update this manually on each release\r\n\r\n\r\n"], 5 | "mappings": ";;AACO,MAAM,UAAU;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/css/modal.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SCSS Limit collection list items, at breakpoint levels 3 | */ 4 | [wfu-modal-state=hidden] { 5 | display: none; 6 | } 7 | 8 | /* Do not apply the above rule if the element is directly within a parent with the attribute [wfu-modal-frame] */ -------------------------------------------------------------------------------- /dist/css/webflow-membership.css: -------------------------------------------------------------------------------- 1 | /* 2 | * SCSS for Sygnal Webflow Util Track library 3 | */ 4 | [wfu-show-logged-in] { 5 | display: none; 6 | } 7 | 8 | [wfu-hide-logged-in] { 9 | display: none; 10 | } 11 | 12 | [wfu-login-button] { 13 | cursor: pointer; 14 | } -------------------------------------------------------------------------------- /src/css/webflow-track.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * SCSS for Sygnal Webflow Util Track library 4 | */ 5 | 6 | 7 | // Temporarily hide until explicitly shown 8 | [wfu-show-tracked] { 9 | display: none; 10 | } 11 | [wfu-hide-tracked] { 12 | display: none; 13 | } 14 | -------------------------------------------------------------------------------- /src/webflow-detect/geo-handlers/ipify.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | 5 | fetch('https://api.ipify.org?format=json') 6 | .then(response => response.json()) 7 | .then(data => { 8 | console.log('Your IP address is:', data.ip); 9 | }); 10 | 11 | */ 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/image-object.ts: -------------------------------------------------------------------------------- 1 | 2 | export class LdJsonImageObject { 3 | 4 | url; 5 | 6 | constructor(url = undefined) { 7 | 8 | this["@type"] = "ImageObject"; 9 | this.url = url; 10 | } 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /dist/css/layouts.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Layout containers 3 | */ 4 | /* 5 | [wfu-layout-preload="hidden"] { 6 | 7 | display: none; 8 | 9 | } 10 | 11 | [wfu-layout-preload="invisible"] { 12 | 13 | visibility: hidden; 14 | 15 | } 16 | *//*# sourceMappingURL=layouts.css.map */ -------------------------------------------------------------------------------- /dist/css/input-range-slider.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/input-range-slider.scss"],"names":[],"mappings":"AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA","file":"input-range-slider.css"} -------------------------------------------------------------------------------- /src/css/webflow-demo.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * SCSS for Sygnal Webflow Util Demo library 4 | */ 5 | 6 | 7 | // Temporarily hide until explicitly shown 8 | // [wfu-show-tracked] { 9 | // display: none; 10 | // } 11 | // [wfu-hide-tracked] { 12 | // display: none; 13 | // } 14 | 15 | -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/entry-point.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export class LdJsonEntryPoint { 4 | 5 | urlTemplate; 6 | 7 | constructor(urlTemplate = undefined) { 8 | this["@type"] = "EntryPoint"; 9 | this.urlTemplate = urlTemplate; 10 | } 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /dist/css/svg embeds.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SA5 SVG Embeds 3 | */ 4 | [wfu-richtext-embed-svg] .w-embed:has(> svg) { 5 | padding: 20px; 6 | background-color: white; 7 | } 8 | [wfu-richtext-embed-svg] .w-embed > svg { 9 | width: 100%; 10 | height: auto; 11 | }/*# sourceMappingURL=svg embeds.css.map */ -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/blog-posting.ts: -------------------------------------------------------------------------------- 1 | import { LdJsonArticle as LdJsonArticle } from "./article"; 2 | 3 | export class LdJsonBlogPosting extends LdJsonArticle { 4 | 5 | constructor() { 6 | super(); 7 | 8 | this["@type"] = "BlogPosting"; 9 | 10 | } 11 | 12 | 13 | 14 | } -------------------------------------------------------------------------------- /dist/css/webflow-elements.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-core/preload.scss","../../src/css/webflow-elements.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EAEI;;;AAMJ;EAEI;;;ACtBJ;EAEI","file":"webflow-elements.css"} -------------------------------------------------------------------------------- /dist/css/webflow-gallery.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-gallery.scss","../../src/webflow-core/preload.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EAEI;;;AAMJ;EAEI","file":"webflow-gallery.css"} -------------------------------------------------------------------------------- /dist/css/webflow-video.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-video.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAKA;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"webflow-video.css"} -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/person.ts: -------------------------------------------------------------------------------- 1 | 2 | export class LdJsonPerson { 3 | 4 | name; 5 | url; 6 | 7 | constructor(name = undefined, url = undefined) { 8 | 9 | this["@type"] = "Person"; 10 | this.name = name; 11 | this.url = url; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/image-object.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/image-object.ts 3 | var LdJsonImageObject = class { 4 | constructor(url = void 0) { 5 | this["@type"] = "ImageObject"; 6 | this.url = url; 7 | } 8 | }; 9 | })(); 10 | //# sourceMappingURL=image-object.js.map 11 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/organization.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/organization.ts 3 | var LdJsonOrganization = class { 4 | constructor(name = void 0) { 5 | this["@type"] = "Organization"; 6 | this.name = name; 7 | } 8 | }; 9 | })(); 10 | //# sourceMappingURL=organization.js.map 11 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/entry-point.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/entry-point.ts 3 | var LdJsonEntryPoint = class { 4 | constructor(urlTemplate = void 0) { 5 | this["@type"] = "EntryPoint"; 6 | this.urlTemplate = urlTemplate; 7 | } 8 | }; 9 | })(); 10 | //# sourceMappingURL=entry-point.js.map 11 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/person.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/person.ts 3 | var LdJsonPerson = class { 4 | constructor(name = void 0, url = void 0) { 5 | this["@type"] = "Person"; 6 | this.name = name; 7 | this.url = url; 8 | } 9 | }; 10 | })(); 11 | //# sourceMappingURL=person.js.map 12 | -------------------------------------------------------------------------------- /dist/webflow-form/form-data-binder.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-form/form-data-binder.ts 3 | var Sa5FormDataBinder = class { 4 | constructor(form, config) { 5 | this.form = form; 6 | this.handler = this; 7 | this.config = config; 8 | } 9 | }; 10 | })(); 11 | //# sourceMappingURL=form-data-binder.js.map 12 | -------------------------------------------------------------------------------- /dist/css/webflow-embed.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-embed.scss"],"names":[],"mappings":";AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAMI;EACE;EACA;;AAGE;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAUF;EAEE;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EAEI;EACA;EACA;;AAUV;EACE;EACA","file":"webflow-embed.css"} -------------------------------------------------------------------------------- /src/webflow-richtext/svg-embeds.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * SA5 SVG Embeds 4 | */ 5 | 6 | 7 | [wfu-richtext-embed-svg] { 8 | 9 | .w-embed:has(> svg) { 10 | padding: 20px; 11 | background-color: white; 12 | } 13 | .w-embed > svg { 14 | width: 100%; 15 | height: auto; 16 | } 17 | 18 | } 19 | 20 | -------------------------------------------------------------------------------- /dist/css/webflow-fixup.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Webflow fixups 3 | */ 4 | /* Editor bugs */ 5 | .w-editor-bem-EditorFallback { 6 | display: none !important; 7 | } 8 | 9 | .w-editor-bem-EditorFallback-mobile { 10 | display: none !important; 11 | } 12 | 13 | /* 14 | .w-editor-publish-controls .w-editor-publish { 15 | display: none !important; 16 | } 17 | */ -------------------------------------------------------------------------------- /src/css/webflow-form.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * SCSS for Sygnal Webflow Util Demo library 4 | */ 5 | 6 | 7 | @use '../webflow-form/form-select'; 8 | 9 | 10 | 11 | // Temporarily hide until explicitly shown 12 | // [wfu-show-tracked] { 13 | // display: none; 14 | // } 15 | // [wfu-hide-tracked] { 16 | // display: none; 17 | // } 18 | 19 | -------------------------------------------------------------------------------- /dist/css/style.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../concept/preloaders/style.scss"],"names":[],"mappings":"AAAQ;AAER;EACI;EACA;;;AAOJ;EACI,YAJQ;EAKR;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA,OAjBQ;EAkBR;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAKR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAEA;EACI","file":"style.css"} -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/news-article.ts: -------------------------------------------------------------------------------- 1 | import { LdJsonArticle } from "./article"; 2 | 3 | export class LdJsonNewsArticle extends LdJsonArticle { 4 | 5 | constructor() { 6 | super(); 7 | // https://developers.google.com/search/docs/appearance/structured-data/article 8 | this["@type"] = "NewsArticle"; 9 | 10 | } 11 | 12 | 13 | 14 | } -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/organization.ts: -------------------------------------------------------------------------------- 1 | import { LdJsonImageObject } from "./image-object"; 2 | 3 | export class LdJsonOrganization { 4 | 5 | name: string; 6 | logo: LdJsonImageObject; 7 | 8 | constructor(name = undefined) { 9 | 10 | this["@type"] = "Organization"; 11 | this.name = name; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/css/webflow-modal.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Webflow modal 4 | */ 5 | 6 | @use '../webflow-modal/modal'; 7 | @use '../webflow-core/preload'; 8 | 9 | // override editor warning on small screen 10 | // also Search engine results warning 11 | // "Unsupported Page" 12 | [wfu-modal-trigger] { 13 | // visibility: hidden; 14 | display: none !important; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /src/css/webflow-membership.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * SCSS for Sygnal Webflow Util Track library 4 | */ 5 | 6 | 7 | // Temporarily hide until explicitly shown 8 | [wfu-show-logged-in] { 9 | display: none; 10 | } 11 | [wfu-hide-logged-in] { 12 | display: none; 13 | } 14 | 15 | // Login Button (expanded) 16 | [wfu-login-button] { 17 | cursor: pointer; 18 | } 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/webflow-modal/modal.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** 4 | * SCSS Limit collection list items, at breakpoint levels 5 | */ 6 | 7 | [wfu-modal-state=hidden] { 8 | display: none; 9 | } 10 | 11 | /* Do not apply the above rule if the element is directly within a parent with the attribute [wfu-modal-frame] */ 12 | // [wfu-modal-frame] > [wfu-modal] { 13 | // display: unset; 14 | // } 15 | 16 | -------------------------------------------------------------------------------- /dist/webflow-ix.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-ix.ts 3 | var Sa5IX = class { 4 | constructor(element) { 5 | } 6 | init() { 7 | } 8 | restart() { 9 | } 10 | stateRestore() { 11 | } 12 | eventPageStart() { 13 | document.dispatchEvent(new Event("readystatechange")); 14 | } 15 | }; 16 | })(); 17 | //# sourceMappingURL=webflow-ix.js.map 18 | -------------------------------------------------------------------------------- /web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /dist/css/webflow-data.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/css/webflow-data.scss","../../src/webflow-core/preload.scss"],"names":[],"mappings":"AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EAEI;;;AAMJ;EAEI;;;ADSJ;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"webflow-data.css"} -------------------------------------------------------------------------------- /dist/css/form-select.css: -------------------------------------------------------------------------------- 1 | /* Style the select element */ 2 | /* Style the options */ 3 | select[multiple][wfu-form-select-theme=blue] option:checked { 4 | background-color: #1967D2; 5 | color: white; 6 | } 7 | select[multiple][wfu-form-select-theme=blue-padded] option { 8 | padding: 5px 10px; 9 | color: black; 10 | } 11 | select[multiple][wfu-form-select-theme=blue-padded] option:checked { 12 | background-color: #1967D2; 13 | color: white; 14 | } -------------------------------------------------------------------------------- /dist/webflow-data-collectionlist.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-data-collectionlist.ts 3 | var getDataSource = function(name) { 4 | let data = document.querySelectorAll('*[data="' + name + '"]'); 5 | let items = []; 6 | data.forEach((elem) => { 7 | items.push(elem.textContent || ""); 8 | }); 9 | let json = "[" + items.join() + "]"; 10 | return JSON.parse(json); 11 | }; 12 | })(); 13 | //# sourceMappingURL=webflow-data-collectionlist.js.map 14 | -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/search-action.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | import { LdJsonEntryPoint } from "./entry-point"; 4 | 5 | export class LdJsonSearchAction { 6 | 7 | queryInput; 8 | target; 9 | 10 | constructor(queryInput = undefined) { 11 | 12 | this["@context"] = "https://schema.org"; 13 | this["@type"] = "SearchAction"; 14 | this.queryInput = queryInput; 15 | this.target = new LdJsonEntryPoint(); 16 | } 17 | 18 | } 19 | 20 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/profile-page.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/profile-page.ts 3 | var LdJsonProfilePage = class { 4 | constructor(name = void 0) { 5 | this["@type"] = "ProfilePage"; 6 | this.name = name; 7 | } 8 | toJSON() { 9 | return { 10 | "@content": "https://schema.org", 11 | "@type": this["@type"], 12 | name: this.name 13 | }; 14 | } 15 | }; 16 | })(); 17 | //# sourceMappingURL=profile-page.js.map 18 | -------------------------------------------------------------------------------- /src/webflow-cache/cache-item.ts: -------------------------------------------------------------------------------- 1 | import { Sa5CacheItemTyped } from "./cache-item-typed"; 2 | 3 | 4 | 5 | 6 | 7 | export class Sa5CacheItem extends Sa5CacheItemTyped { 8 | 9 | constructor(customConfig = {}) { 10 | super(customConfig) 11 | } 12 | 13 | async getAsync(): Promise { 14 | 15 | return await super.getAsync() as string; 16 | } 17 | 18 | async setAsync(value: string) { 19 | await super.setAsync(value); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/webflow-form/handler/basin-handler.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | import { WfuFormHandler } from './form-handler'; 5 | import { Sa5Form, WebflowFormMode } from '../../webflow-form'; 6 | 7 | 8 | 9 | export class WfuFormHandlerBasin extends WfuFormHandler { 10 | 11 | constructor(form: Sa5Form, config = {}) { 12 | 13 | console.log("BASIN HANDLER."); 14 | 15 | super(form, config); // call the super class constructor and pass in the name parameter 16 | } 17 | 18 | } 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /dist/css/webflow-form.css: -------------------------------------------------------------------------------- 1 | /* 2 | * SCSS for Sygnal Webflow Util Demo library 3 | */ 4 | /* Style the select element */ 5 | /* Style the options */ 6 | select[multiple][wfu-form-select-theme=blue] option:checked { 7 | background-color: #1967D2; 8 | color: white; 9 | } 10 | select[multiple][wfu-form-select-theme=blue-padded] option { 11 | padding: 5px 10px; 12 | color: black; 13 | } 14 | select[multiple][wfu-form-select-theme=blue-padded] option:checked { 15 | background-color: #1967D2; 16 | color: white; 17 | } -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/image-object.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../src/webflow-seo/json-ld/image-object.ts"], 4 | "sourcesContent": ["\r\nexport class LdJsonImageObject {\r\n\r\n url;\r\n \r\n constructor(url = undefined) { \r\n \r\n this[\"@type\"] = \"ImageObject\";\r\n this.url = url; \r\n }\r\n \r\n }\r\n \r\n "], 5 | "mappings": ";;AACO,MAAM,oBAAN,MAAwB;AAAA,IAI3B,YAAY,MAAM,QAAW;AAEzB,WAAK,WAAW;AAChB,WAAK,MAAM;AAAA,IACf;AAAA,EAEF;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/css/webflow-ui.css: -------------------------------------------------------------------------------- 1 | /* 2 | * CSS for Sygnal Webflow Util UI component library 3 | */ 4 | /* Ratings Component */ 5 | .wfu-rating-stars { 6 | position: relative; 7 | display: inline-block; 8 | white-space: nowrap; 9 | } 10 | 11 | .wfu-rating-stars svg { 12 | width: 20%; 13 | fill: gold; 14 | } 15 | 16 | .wfu-rating-stars-cover { 17 | background: white; 18 | height: 100%; 19 | overflow: hidden; 20 | mix-blend-mode: color; 21 | position: absolute; 22 | top: 0; 23 | right: 0; 24 | width: 100%; 25 | } -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/profile-page.ts: -------------------------------------------------------------------------------- 1 | 2 | export class LdJsonProfilePage { 3 | 4 | name: string; 5 | 6 | constructor(name = undefined) { 7 | 8 | this["@type"] = "ProfilePage"; 9 | this.name = name; 10 | } 11 | 12 | toJSON() { 13 | return { 14 | 15 | "@content": "https://schema.org", 16 | "@type": this["@type"], 17 | 18 | name: this.name, 19 | 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/entry-point.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../src/webflow-seo/json-ld/entry-point.ts"], 4 | "sourcesContent": ["\r\n\r\nexport class LdJsonEntryPoint {\r\n\r\n urlTemplate;\r\n \r\n constructor(urlTemplate = undefined) { \r\n this[\"@type\"] = \"EntryPoint\"; \r\n this.urlTemplate = urlTemplate; \r\n }\r\n \r\n}\r\n\r\n"], 5 | "mappings": ";;AAEO,MAAM,mBAAN,MAAuB;AAAA,IAI1B,YAAY,cAAc,QAAW;AACjC,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACvB;AAAA,EAEJ;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /concept/preloaders/style.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"AAAQ,0EAAA;AAER;EACI,SAAA;EACA,UAAA;ACAJ;;ADOA;EACI,mBAJQ;EAKR,kBAAA;EACA,iCAAA;ACJJ;;ADOA;EACI,YAAA;EACA,aAAA;EACA,YAAA;EACA,qBAAA;ACJJ;;ADOA;EACI,kBAAA;EACA,WAjBQ;EAkBR,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,yBAAA;EACA,eAAA;ACJJ;ADMI;EACI,gBAAA;ACJR;;ADSA;EACI,gBAAA;EACA,aAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;ACNJ;ADQI;EACI,kBAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,QAAA;ACNR;ADSI;EACI,WAAA;EACA,qBAAA;ACPR;ADSQ;EACI,0BAAA;ACPZ","file":"style.css"} -------------------------------------------------------------------------------- /src/webflow-finsweet.ts: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * SA5 4 | * webflow-finsweet 5 | * 6 | * Extensions and helper utils for Finsweet Attributes 7 | */ 8 | 9 | import { Sa5FinsweetLoad } from "./webflow-finsweet/fs-load"; 10 | 11 | 12 | 13 | export class Sa5Finsweet { 14 | 15 | fsLoad: Sa5FinsweetLoad; 16 | 17 | constructor() { 18 | 19 | this.fsLoad = new Sa5FinsweetLoad(); 20 | 21 | } 22 | 23 | public init(): void { 24 | 25 | // Init FS Load extensions 26 | this.fsLoad.init(); 27 | 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /dist/css/webflow-accordion.css: -------------------------------------------------------------------------------- 1 | [filter-data] { 2 | /* display: none;*/ 3 | } 4 | 5 | [wfu-ui-accordion=header] { 6 | cursor: pointer; 7 | transition: background-color 0.2s linear; 8 | } 9 | 10 | [wfu-ui-accordion=content] { 11 | /* .accordion-content { */ 12 | max-height: 0; 13 | overflow: hidden; 14 | transition: max-height 0.2s ease-in-out; 15 | } 16 | 17 | @media screen and (min-width: 568px) { 18 | [wfu-ui-accordion=content] { 19 | /* .accordion-content { */ 20 | max-height: none; 21 | overflow: auto; 22 | } 23 | } -------------------------------------------------------------------------------- /dist/css/markdown.css: -------------------------------------------------------------------------------- 1 | markdown { 2 | display: none; 3 | } 4 | 5 | [theme=default] { 6 | /* Table formatting */ 7 | /* Marker highlighting */ 8 | } 9 | [theme=default] table { 10 | border-spacing: 10px 10px; 11 | margin-bottom: 1rem; 12 | } 13 | [theme=default] th { 14 | padding: 2px 30px 2px 10px; 15 | margin-bottom: 5px; 16 | margin-right: 10px; 17 | } 18 | [theme=default] td { 19 | padding: 2px 30px 2px 10px; 20 | } 21 | [theme=default] mark { 22 | background-color: #ffffbb; 23 | padding: 0 0.15rem; 24 | margin: 0 -0.15rem; 25 | } -------------------------------------------------------------------------------- /dist/webflow-data/webflow-collectionlist-data.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-data/webflow-collectionlist-data.ts 3 | var prepareCollectionListDataSource = (dataSource) => { 4 | let data = dataSource.querySelectorAll("script"); 5 | console.log(`items = ${data.length}`); 6 | let items = []; 7 | data.forEach((elem) => { 8 | items.push(elem.textContent || ""); 9 | }); 10 | let json = "[" + items.join() + "]"; 11 | return JSON.parse(json); 12 | }; 13 | })(); 14 | //# sourceMappingURL=webflow-collectionlist-data.js.map 15 | -------------------------------------------------------------------------------- /src/locode/webflow-forms-helper.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * webflow-forms-helper 4 | * 5 | * Sygnal Technology Group 6 | * http://sygnal.com 7 | * 8 | * LO-CODE Helper class to simplify form functions. 9 | */ 10 | 11 | 12 | import { loadAllData } from '../modules/webflow-data.js'; 13 | import { dataBindAllForms } from '../modules/webflow-form.js'; 14 | 15 | export var dataBindAll = function () { 16 | 17 | // Create database 18 | var db = loadAllData(); 19 | 20 | // Bind all form elements 21 | dataBindAllForms(db); 22 | 23 | } 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/css/webflow-accordion.scss: -------------------------------------------------------------------------------- 1 | 2 | [filter-data] { 3 | /* display: none;*/ 4 | } 5 | 6 | [wfu-ui-accordion=header] { 7 | cursor: pointer; 8 | transition: background-color 0.2s linear; 9 | } 10 | 11 | [wfu-ui-accordion=content] { 12 | /* .accordion-content { */ 13 | max-height: 0; 14 | overflow: hidden; 15 | transition: max-height 0.2s ease-in-out; 16 | } 17 | 18 | @media screen and (min-width: 568px) { 19 | [wfu-ui-accordion=content] { 20 | /* .accordion-content { */ 21 | max-height: none; 22 | overflow: auto; 23 | } 24 | } -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/person.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../src/webflow-seo/json-ld/person.ts"], 4 | "sourcesContent": ["\r\nexport class LdJsonPerson {\r\n\r\n name;\r\n url;\r\n \r\n constructor(name = undefined, url = undefined) { \r\n \r\n this[\"@type\"] = \"Person\";\r\n this.name = name; \r\n this.url = url; \r\n }\r\n \r\n }\r\n "], 5 | "mappings": ";;AACO,MAAM,eAAN,MAAmB;AAAA,IAKtB,YAAY,OAAO,QAAW,MAAM,QAAW;AAE3C,WAAK,WAAW;AAChB,WAAK,OAAO;AACZ,WAAK,MAAM;AAAA,IACf;AAAA,EAEF;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/css/webflow-util.css: -------------------------------------------------------------------------------- 1 | /* 2 | * General CSS for Sygnal Webflow Util library 3 | */ 4 | /* Initially hide images that are tagged for SVG-inlining. 5 | This prevents them from appearing (blck) before the CSS color-rules can be applied. */ 6 | .wfu-svg { 7 | visibility: hidden; 8 | } 9 | 10 | .wfu-json-string { 11 | color: #008000; 12 | } 13 | 14 | .wfu-json-number { 15 | color: #FF0000; 16 | } 17 | 18 | .wfu-json-boolean { 19 | color: #FF8C00; 20 | } 21 | 22 | .wfu-json-null { 23 | color: #908080; 24 | } 25 | 26 | .wfu-json-key { 27 | color: #1A1A1A; 28 | } -------------------------------------------------------------------------------- /src/webflow-seo/json-ld/tech-article.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * according to schema.org it is meant for “How-to (task) topics, step-by-step, procedural troubleshooting, specifications, etc.” It validates just fine on Google’s Structured Data Testing Tool, and we are really excited to see what type of results it can yield. 3 | */ 4 | 5 | 6 | 7 | import { LdJsonArticle } from "./article"; 8 | 9 | export class LdJsonTechArticle extends LdJsonArticle { 10 | 11 | constructor() { 12 | super(); 13 | 14 | this["@type"] = "TechArticle"; 15 | 16 | } 17 | 18 | 19 | 20 | } -------------------------------------------------------------------------------- /src/css/webflow-ui.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * CSS for Sygnal Webflow Util UI component library 4 | */ 5 | 6 | /* Ratings Component */ 7 | 8 | .wfu-rating-stars { 9 | position: relative; 10 | display: inline-block; 11 | white-space: nowrap; 12 | } 13 | 14 | .wfu-rating-stars svg { 15 | width: 20%; 16 | fill: gold; 17 | } 18 | 19 | .wfu-rating-stars-cover { 20 | background: white; 21 | height: 100%; 22 | overflow: hidden; 23 | mix-blend-mode: color; 24 | position: absolute; 25 | top: 0; 26 | right: 0; 27 | width: 100%; 28 | } 29 | -------------------------------------------------------------------------------- /dist/webflow-detect/geo-handlers/geo-handler-base.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-detect/geo-handlers/geo-handler-base.ts 3 | var GeoHandlerBase = class { 4 | constructor(token = null) { 5 | this.token = token; 6 | } 7 | get info() { 8 | return { 9 | ip: this.userInfoRaw.ip, 10 | country: this.userInfoRaw.countryCode, 11 | city: null, 12 | region: null, 13 | postal: null, 14 | timezone: null 15 | }; 16 | } 17 | async getInfoAsync() { 18 | } 19 | }; 20 | })(); 21 | //# sourceMappingURL=geo-handler-base.js.map 22 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/organization.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../src/webflow-seo/json-ld/organization.ts"], 4 | "sourcesContent": ["import { LdJsonImageObject } from \"./image-object\";\r\n\r\nexport class LdJsonOrganization {\r\n\r\n name: string;\r\n logo: LdJsonImageObject;\r\n \r\n constructor(name = undefined) { \r\n \r\n this[\"@type\"] = \"Organization\"; \r\n this.name = name; \r\n }\r\n \r\n }\r\n "], 5 | "mappings": ";;AAEO,MAAM,qBAAN,MAAyB;AAAA,IAK5B,YAAY,OAAO,QAAW;AAE1B,WAAK,WAAW;AAChB,WAAK,OAAO;AAAA,IAChB;AAAA,EAEF;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/css/webflow-format.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Formatting CSS for Sygnal Webflow Util library 3 | */ 4 | /* Formatting CSVs 5 | Apply the wfu-csv attr to a collection list for format its contents as CSV 6 | NOTE: This CSS chunk can be implemented copied to an HTML embed, if you want to see the layout directly in the designer. 7 | */ 8 | [wfu-csv] .w-dyn-item { 9 | display: inline; 10 | } 11 | 12 | [wfu-csv] .w-dyn-item div, 13 | [wfu-csv] .w-dyn-item p { 14 | display: inline; 15 | } 16 | 17 | [wfu-csv] .w-dyn-item:not(:last-child) div::after, 18 | [wfu-csv] .w-dyn-item:not(:last-child) p::after { 19 | content: ", "; 20 | } -------------------------------------------------------------------------------- /src/css/webflow-util.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * General CSS for Sygnal Webflow Util library 4 | */ 5 | 6 | /* Initially hide images that are tagged for SVG-inlining. 7 | This prevents them from appearing (blck) before the CSS color-rules can be applied. */ 8 | .wfu-svg { 9 | visibility: hidden; 10 | } 11 | 12 | pre.wfu-code { 13 | } 14 | 15 | .wfu-json-string { 16 | color: #008000; 17 | } 18 | 19 | .wfu-json-number { 20 | color: #FF0000; 21 | } 22 | 23 | .wfu-json-boolean { 24 | color: #FF8C00; 25 | } 26 | 27 | .wfu-json-null { 28 | color: #908080; 29 | } 30 | 31 | .wfu-json-key { 32 | color: #1A1A1A; 33 | } 34 | -------------------------------------------------------------------------------- /dist/webflow-detect/routing-rules.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-detect/routing-rules.ts 3 | var Sa5RoutingRules = class { 4 | constructor(detectController) { 5 | this.detectController = detectController; 6 | } 7 | load(rules) { 8 | this.rules = rules; 9 | for (const rule of rules) { 10 | switch (rule.type) { 11 | case "geo-country": { 12 | this.detectController.countries = new Map( 13 | rule.route 14 | ); 15 | break; 16 | } 17 | } 18 | } 19 | } 20 | }; 21 | })(); 22 | //# sourceMappingURL=routing-rules.js.map 23 | -------------------------------------------------------------------------------- /dist/css/input-range-slider.css: -------------------------------------------------------------------------------- 1 | .slider { 2 | -webkit-appearance: none; 3 | width: 100%; 4 | height: 15px; 5 | border-radius: 5px; 6 | background: #d3d3d3; 7 | outline: none; 8 | opacity: 0.7; 9 | -webkit-transition: 0.2s; 10 | transition: opacity 0.2s; 11 | } 12 | 13 | .slider::-webkit-slider-thumb { 14 | -webkit-appearance: none; 15 | appearance: none; 16 | width: 25px; 17 | height: 25px; 18 | border-radius: 50%; 19 | background: darkblue; 20 | cursor: pointer; 21 | } 22 | 23 | .slider::-moz-range-thumb { 24 | width: 25px; 25 | height: 25px; 26 | border-radius: 50%; 27 | background: darkblue; 28 | cursor: pointer; 29 | } -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/search-action.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-seo/json-ld/entry-point.ts 3 | var LdJsonEntryPoint = class { 4 | constructor(urlTemplate = void 0) { 5 | this["@type"] = "EntryPoint"; 6 | this.urlTemplate = urlTemplate; 7 | } 8 | }; 9 | 10 | // src/webflow-seo/json-ld/search-action.ts 11 | var LdJsonSearchAction = class { 12 | constructor(queryInput = void 0) { 13 | this["@context"] = "https://schema.org"; 14 | this["@type"] = "SearchAction"; 15 | this.queryInput = queryInput; 16 | this.target = new LdJsonEntryPoint(); 17 | } 18 | }; 19 | })(); 20 | //# sourceMappingURL=search-action.js.map 21 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "typeRoots": ["node_modules/@types"], // , "custom-typings"], 4 | "allowJs": true, 5 | "outDir": "./dist", 6 | "sourceMap": true, 7 | "rootDir": "./src", 8 | "module": "commonjs", // "es6", // "commonjs" 9 | "target": "es2020", // "es6", 10 | "esModuleInterop": true, 11 | 12 | // Cannot find module 'ts-transformer-keys'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option? 13 | // https://stackoverflow.com/a/71191552 14 | "moduleResolution":"node", // https://www.typescriptlang.org/docs/handbook/module-resolution.html 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dist/css/nested-list.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../../src/webflow-richtext/nested-list.scss"],"names":[],"mappings":";AACA;AAAA;AAAA;AASI;EACI;;AAGJ;EACI;;;AAWJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAeJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAMJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;;AAaJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAUJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAMJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;;AAaJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAQJ;EACI;;AAEJ;EACI;;AAUJ;EACI;;AAEJ;EACI;;AAaR;AAAA;AAAA;AAIA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;;AAAA","file":"nested-list.css"} -------------------------------------------------------------------------------- /dist/webflow-url/targetLinks.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-url/targetLinks.ts 3 | var WfuTargetLinks = class { 4 | constructor(element) { 5 | this._element = element; 6 | } 7 | init() { 8 | let elements = Array.from( 9 | document.querySelectorAll("a[href^='http://']:not([target]), a[href^='https://']:not([target])") 10 | ); 11 | elements.forEach((element) => { 12 | let href = element.getAttribute("href"); 13 | if (href) { 14 | console.debug(`retargeting ${href}.`); 15 | element.setAttribute("target", "_blank"); 16 | } 17 | }); 18 | } 19 | }; 20 | })(); 21 | //# sourceMappingURL=targetLinks.js.map 22 | -------------------------------------------------------------------------------- /dist/webflow-membership/hyperflow.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-membership/hyperflow.ts 3 | var Sa5UserHyperflow = class { 4 | constructor(membership) { 5 | this.accessGroups = []; 6 | this.membership = membership; 7 | } 8 | async initAsync() { 9 | console.log("initAsync"); 10 | console.log(await this.getCurrentUserAsync()); 11 | } 12 | async getCurrentUserAsync() { 13 | const response = await fetch( 14 | `${this.membership.config.hf.currentUserUrl}` 15 | ); 16 | console.log("STATUS:", response.status); 17 | const raw = await response.json(); 18 | console.log(raw); 19 | } 20 | }; 21 | })(); 22 | //# sourceMappingURL=hyperflow.js.map 23 | -------------------------------------------------------------------------------- /dist/css/preload.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Preload 3 | * 4 | * Preload is an attribute that is used to hide elements until they are data-bound. 5 | * This is useful for hiding elements that are being loaded from a CMS or other 6 | * data source. 7 | * 8 | * The attribute can be set to "hidden" or "invisible". 9 | * It is removed after data-binding to make the element visible. 10 | 11 | * Usage: 12 | * 13 | *
No pre-loader, visible
14 | *
This will be hidden until data-bound
15 | *
This will be invisible until data-bound
16 | */ 17 | [wfu-preload=hidden] { 18 | display: none; 19 | } 20 | 21 | [wfu-preload=invisible] { 22 | visibility: hidden; 23 | } -------------------------------------------------------------------------------- /src/css/webflow-format.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Formatting CSS for Sygnal Webflow Util library 4 | */ 5 | 6 | /* Formatting CSVs 7 | Apply the wfu-csv attr to a collection list for format its contents as CSV 8 | NOTE: This CSS chunk can be implemented copied to an HTML embed, if you want to see the layout directly in the designer. 9 | */ 10 | [wfu-csv] .w-dyn-item { 11 | display: inline; 12 | } 13 | [wfu-csv] .w-dyn-item div, 14 | [wfu-csv] .w-dyn-item p { 15 | display: inline; 16 | } 17 | [wfu-csv] .w-dyn-item:not(:last-child) div::after, 18 | [wfu-csv] .w-dyn-item:not(:last-child) p::after { 19 | content: ", "; 20 | } 21 | 22 | // Initially hide dates 23 | // [wfu-format-date] { 24 | // visibility: hidden; 25 | // } -------------------------------------------------------------------------------- /src/css/webflow-fixup.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Webflow fixups 4 | */ 5 | 6 | /* Editor bugs */ 7 | 8 | // override editor warning on small screen 9 | // also Search engine results warning 10 | // "Unsupported Page" 11 | .w-editor-bem-EditorFallback { 12 | // visibility: hidden; 13 | display: none !important; 14 | } 15 | .w-editor-bem-EditorFallback-mobile { 16 | display: none !important; 17 | } 18 | 19 | // hide Publish button from Editors 20 | // https://discourse.webflow.com/t/published-by-editor-also-publish-my-staging-design/63483/10?u=memetican 21 | // https://webflow.com/feature/publish-individual-cms-items 22 | 23 | /* 24 | .w-editor-publish-controls .w-editor-publish { 25 | display: none !important; 26 | } 27 | */ 28 | 29 | -------------------------------------------------------------------------------- /dist/webflow-membership/internal/logout.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-membership/internal/logout.ts 3 | var WebflowUsysLogout = class extends WebflowUsysRequest { 4 | constructor() { 5 | super(); 6 | } 7 | get requestGql() { 8 | return ` 9 | mutation UserLogoutRequest { 10 | usysDestroySession { 11 | ok 12 | __typename 13 | } 14 | } 15 | `; 16 | } 17 | get requestObj() { 18 | return [ 19 | { 20 | operationName: "GetFieldValidations", 21 | variables: {}, 22 | query: this.requestGql 23 | } 24 | ]; 25 | } 26 | }; 27 | })(); 28 | //# sourceMappingURL=logout.js.map 29 | -------------------------------------------------------------------------------- /src/css/input-range-slider.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | .slider { 4 | -webkit-appearance: none; 5 | width: 100%; 6 | height: 15px; 7 | border-radius: 5px; 8 | background: #d3d3d3; 9 | outline: none; 10 | opacity: 0.7; 11 | -webkit-transition: .2s; 12 | transition: opacity .2s; 13 | } 14 | 15 | .slider::-webkit-slider-thumb { 16 | -webkit-appearance: none; 17 | appearance: none; 18 | width: 25px; 19 | height: 25px; 20 | border-radius: 50%; 21 | background: darkblue; 22 | cursor: pointer; 23 | } 24 | 25 | .slider::-moz-range-thumb { 26 | width: 25px; 27 | height: 25px; 28 | border-radius: 50%; 29 | background: darkblue; 30 | cursor: pointer; 31 | } -------------------------------------------------------------------------------- /src/webflow-core/IDeckNavigation.ts: -------------------------------------------------------------------------------- 1 | 2 | interface IDeckNavigation { 3 | 4 | // Methods 5 | goToFirst(): void; 6 | goToLast(): void; 7 | goToNext(): void; 8 | goToNextLoop(): void; 9 | goToPrev(): void; 10 | goToPrevLoop(): void; 11 | goTo(index: number): void; 12 | goToName(name: string): void; 13 | 14 | // Properties with getter and setter 15 | currentNum: number; // This acts as a shorthand for both getter and setter 16 | currentIndex: number; 17 | count: number; 18 | 19 | // If you want to define explicit get and set methods: 20 | // getCurrentNum(): number; 21 | // setCurrentNum(value: number): void; 22 | // getCurrentIndex(): number; 23 | // setCurrentIndex(value: number): void; 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/webflow-data/webflow-collectionlist-data.ts: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Sygnal Technology Group 4 | * https://www.sygnal.com 5 | * 6 | * Creates a data source from a Webflow Collection list. 7 | */ 8 | 9 | // import { Database } from '../modules/webflow-data.js'; 10 | 11 | 12 | export const prepareCollectionListDataSource = (dataSource: Element) => { 13 | // Aggregate JSON Data 14 | let data = dataSource.querySelectorAll('script'); 15 | console.log(`items = ${data.length}`); 16 | 17 | let items: string[] = []; // place to store the pairs 18 | data.forEach((elem) => { //loop over the keys 19 | items.push(elem.textContent || ""); 20 | }) 21 | 22 | let json = '[' + items.join() + ']'; 23 | 24 | return JSON.parse(json); 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/webflow-data-collectionlist.ts: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Sygnal Technology Group 4 | * https://www.sygnal.com 5 | * 6 | * Designed to aggregate JSON excerpts produced by a Webflow Collection List 7 | * into a single JSON datasource, for use in other places, such as Form Select data-binding. 8 | */ 9 | 10 | // Amalgamates from internally tagged DIVs 11 | export var getDataSource = function (name) { 12 | 13 | // Aggregate JSON Data 14 | let data = document.querySelectorAll('*[data="' + name + '"]'); 15 | 16 | let items: string[] = []; // place to store the pairs 17 | data.forEach((elem) => { //loop over the keys 18 | items.push(elem.textContent || ""); 19 | }) 20 | 21 | let json = '[' + items.join() + ']'; 22 | 23 | return JSON.parse(json); 24 | } 25 | 26 | -------------------------------------------------------------------------------- /dist/css/webflow-gallery.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SCSS for SA5 Gallery library 3 | */ 4 | /** 5 | * Preload 6 | * 7 | * Preload is an attribute that is used to hide elements until they are data-bound. 8 | * This is useful for hiding elements that are being loaded from a CMS or other 9 | * data source. 10 | * 11 | * The attribute can be set to "hidden" or "invisible". 12 | * It is removed after data-binding to make the element visible. 13 | 14 | * Usage: 15 | * 16 | *
No pre-loader, visible
17 | *
This will be hidden until data-bound
18 | *
This will be invisible until data-bound
19 | */ 20 | [wfu-preload=hidden] { 21 | display: none; 22 | } 23 | 24 | [wfu-preload=invisible] { 25 | visibility: hidden; 26 | } -------------------------------------------------------------------------------- /dist/css/webflow-elements.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Preload 3 | * 4 | * Preload is an attribute that is used to hide elements until they are data-bound. 5 | * This is useful for hiding elements that are being loaded from a CMS or other 6 | * data source. 7 | * 8 | * The attribute can be set to "hidden" or "invisible". 9 | * It is removed after data-binding to make the element visible. 10 | 11 | * Usage: 12 | * 13 | *
No pre-loader, visible
14 | *
This will be hidden until data-bound
15 | *
This will be invisible until data-bound
16 | */ 17 | [wfu-preload=hidden] { 18 | display: none; 19 | } 20 | 21 | [wfu-preload=invisible] { 22 | visibility: hidden; 23 | } 24 | 25 | iframe + .w-lightbox-caption { 26 | margin-bottom: -50px; 27 | } -------------------------------------------------------------------------------- /dist/webflow-data/google-sheet-data.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-data/google-sheet-data.ts 3 | var getGoogleSheetCsvUrl = function(id) { 4 | return `https://docs.google.com/spreadsheets/d/${id}/export?format=csv`; 5 | }; 6 | var getGoogleSheetData = function(id) { 7 | return new Promise((resolve, reject) => { 8 | var url = getGoogleSheetCsvUrl(id); 9 | console.log(url); 10 | var json = getCsvAsData( 11 | getGoogleSheetCsvUrl(id) 12 | ); 13 | resolve(json); 14 | }); 15 | }; 16 | var getGoogleSheetDataUrl = function(url) { 17 | return new Promise((resolve, reject) => { 18 | console.log(url); 19 | var json = getCsvAsData( 20 | url 21 | ); 22 | resolve(json); 23 | }); 24 | }; 25 | })(); 26 | //# sourceMappingURL=google-sheet-data.js.map 27 | -------------------------------------------------------------------------------- /dist/webflow-seo/json-ld/profile-page.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../src/webflow-seo/json-ld/profile-page.ts"], 4 | "sourcesContent": ["\r\nexport class LdJsonProfilePage {\r\n\r\n name: string;\r\n \r\n constructor(name = undefined) { \r\n \r\n this[\"@type\"] = \"ProfilePage\"; \r\n this.name = name; \r\n }\r\n \r\n toJSON() {\r\n return {\r\n \r\n \"@content\": \"https://schema.org\",\r\n \"@type\": this[\"@type\"],\r\n \r\n name: this.name,\r\n \r\n } \r\n }\r\n\r\n }\r\n "], 5 | "mappings": ";;AACO,MAAM,oBAAN,MAAwB;AAAA,IAI3B,YAAY,OAAO,QAAW;AAE1B,WAAK,WAAW;AAChB,WAAK,OAAO;AAAA,IAChB;AAAA,IAEA,SAAS;AACL,aAAO;AAAA,QAEH,YAAY;AAAA,QACZ,SAAS,KAAK;AAAA,QAEd,MAAM,KAAK;AAAA,MAEf;AAAA,IACJ;AAAA,EAEF;", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /src/webflow-html/markdown.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | // Hide markdown elements pre-processing 4 | 5 | markdown { 6 | display: none; 7 | } 8 | 9 | // Themes 10 | 11 | [theme=default] { 12 | 13 | /* Table formatting */ 14 | table { 15 | // border-collapse: separate; 16 | border-spacing: 10px 10px; 17 | margin-bottom: 1rem; 18 | } 19 | 20 | th { 21 | padding: 2px 30px 2px 10px; 22 | margin-bottom: 5px; 23 | // background-color: #188fd6; 24 | // color: white; 25 | margin-right: 10px; 26 | } 27 | 28 | td { 29 | padding: 2px 30px 2px 10px; 30 | // background-color: #eee; 31 | } 32 | 33 | /* Marker highlighting */ 34 | mark { 35 | background-color: #ffffbb; 36 | padding: 0 0.15rem; 37 | margin: 0 -0.15rem; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /dist/webflow-form/checkbox.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-form/checkbox.ts 3 | var Sa5FormCheckbox = class { 4 | constructor(elem, config = {}) { 5 | this.checkbox = elem; 6 | this.config = config; 7 | } 8 | init() { 9 | } 10 | process() { 11 | if (!this.checkbox.checked && this.isCandidateForRemoval()) { 12 | this.checkbox.parentNode?.removeChild( 13 | this.checkbox 14 | ); 15 | } 16 | } 17 | isCandidateForRemoval() { 18 | let element = this.checkbox; 19 | while (element) { 20 | if (element.hasAttribute("wfu-form-checkbox") && element.getAttribute("wfu-form-checkbox") === "remove-unchecked") { 21 | return true; 22 | } 23 | element = element.parentElement; 24 | } 25 | return false; 26 | } 27 | }; 28 | })(); 29 | //# sourceMappingURL=checkbox.js.map 30 | -------------------------------------------------------------------------------- /src/webflow-format/date-handler/moment-handler.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | import { WfuDateHandler } from './date-handler'; 5 | import moment = require('moment'); 6 | 7 | 8 | 9 | export class WfuDateHandlerMoment extends WfuDateHandler { 10 | 11 | constructor(config) { 12 | super(config); // call the super class constructor and pass in the name parameter 13 | } 14 | 15 | formatDate(date: Date): string { 16 | 17 | // Get the original content (assumed to be a valid date) 18 | // const originalContent = element.textContent; 19 | 20 | // Use Moment.js to format the date 21 | const formattedDate = moment(date).format(this.formatString); 22 | 23 | this.debug.debug (`formatting date ${date} -> ${formattedDate}`); 24 | 25 | // Update the element's content 26 | return formattedDate; 27 | } 28 | 29 | } 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/nocode/webflow-kiosk.ts: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * sa5-kiosk 4 | * 5 | * Sygnal Technology Group 6 | * https://www.sygnal.com 7 | * 8 | * NO-CODE version, keys off of [wfu] attributes. 9 | */ 10 | 11 | import { Sa5Core } from '../webflow-core'; 12 | import { Sa5Debug } from '../webflow-core/debug'; 13 | import { VERSION } from '../version'; 14 | import { Sa5Kiosk } from '../webflow-kiosk'; 15 | 16 | const init = () => { 17 | 18 | let core: Sa5Core = Sa5Core.startup(); 19 | 20 | // Initialize debugging 21 | let debug = new Sa5Debug("sa5-kiosk"); 22 | debug.debug (`Initializing v${VERSION}`); 23 | 24 | const sa5Kiosk = new Sa5Kiosk(); 25 | sa5Kiosk.init(); 26 | 27 | } 28 | 29 | // Auto-execute on DOM load 30 | if (document.readyState !== 'loading') { 31 | init(); 32 | } else { 33 | document.addEventListener("DOMContentLoaded", init); 34 | } 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /dist/webflow-data/github-data.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // src/webflow-data/github-data.ts 3 | var getGithubRepoTagsUrl = function(userOrg, repo) { 4 | return `https://api.github.com/repos/${userOrg}/${repo}/tags`; 5 | }; 6 | var getGithubRepoTags = function(userOrg, repo) { 7 | const url = getGithubRepoTagsUrl(userOrg, repo); 8 | return new Promise((resolve, reject) => { 9 | const url2 = getGithubRepoTagsUrl(userOrg, repo); 10 | fetch(url2).then((response) => response.json()).then((data) => resolve(data)).catch((error) => console.error("Error:", error)); 11 | }); 12 | }; 13 | var getGithubRepoTagLatest = function(userOrg, repo) { 14 | return new Promise((resolve, reject) => { 15 | getGithubRepoTags(userOrg, repo).then((res) => { 16 | resolve(res[0].name); 17 | }, (err) => { 18 | }); 19 | }); 20 | }; 21 | })(); 22 | //# sourceMappingURL=github-data.js.map 23 | -------------------------------------------------------------------------------- /src/webflow-form/form-select.scss: -------------------------------------------------------------------------------- 1 | 2 | /* Style the select element */ 3 | // select[multiple] { 4 | // width: 200px; 5 | // height: 150px; 6 | // padding: 5px; 7 | // border: 1px solid #ccc; 8 | // border-radius: 4px; 9 | // font-family: Arial, sans-serif; 10 | // } 11 | 12 | /* Style the options */ 13 | select[multiple] { 14 | 15 | 16 | &[wfu-form-select-theme=blue] { 17 | 18 | option { 19 | &:checked { 20 | background-color: #1967D2; 21 | color: white; 22 | } 23 | } 24 | 25 | } 26 | 27 | &[wfu-form-select-theme=blue-padded] { 28 | 29 | option { 30 | padding: 5px 10px; 31 | color: black; 32 | 33 | &:checked { 34 | background-color: #1967D2; 35 | color: white; 36 | } 37 | } 38 | 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /src/nocode/webflow-hotkeys.ts: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * webflow-hotkeys 4 | * 5 | * Sygnal Technology Group 6 | * https://www.sygnal.com 7 | * 8 | * NO-CODE version, keys off of [wfu] attributes. 9 | */ 10 | 11 | import { Sa5Hotkeys } from '../webflow-hotkeys'; 12 | import { Sa5Core } from '../webflow-core'; 13 | import { Sa5Debug } from '../webflow-core/debug'; 14 | import { VERSION } from '../version'; 15 | 16 | const init = () => { 17 | 18 | // new Sa5Core().init(); 19 | let core: Sa5Core = Sa5Core.startup(); 20 | 21 | // Initialize debugging 22 | let debug = new Sa5Debug("sa5-hotkeys"); 23 | debug.debug (`Initializing v${VERSION}`); 24 | 25 | 26 | const sa5Hotkeys = new Sa5Hotkeys(); 27 | sa5Hotkeys.init(); 28 | 29 | } 30 | 31 | // Auto-execute on DOM load 32 | if (document.readyState !== 'loading') { 33 | init(); 34 | } else { 35 | document.addEventListener("DOMContentLoaded", init); 36 | } -------------------------------------------------------------------------------- /src/webflow-core/preload.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Preload 4 | * 5 | * Preload is an attribute that is used to hide elements until they are data-bound. 6 | * This is useful for hiding elements that are being loaded from a CMS or other 7 | * data source. 8 | * 9 | * The attribute can be set to "hidden" or "invisible". 10 | * It is removed after data-binding to make the element visible. 11 | 12 | * Usage: 13 | * 14 | *
No pre-loader, visible
15 | *
This will be hidden until data-bound
16 | *
This will be invisible until data-bound
17 | */ 18 | 19 | // Temporarily hide until data-bound 20 | [wfu-preload="hidden"] { 21 | 22 | display: none; 23 | 24 | } 25 | 26 | // Temporarily make invisible until data-bound 27 | // Will take the appropriate space 28 | [wfu-preload="invisible"] { 29 | 30 | visibility: hidden; 31 | 32 | } 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/webflow-core/designer.ts: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * webflow-core 4 | * 5 | * Sygnal Technology Group 6 | * https://www.sygnal.com 7 | * 8 | * Designer Utilities 9 | */ 10 | 11 | import { Sa5Attribute } from "../globals"; 12 | 13 | 14 | 15 | export class Sa5Designer { 16 | 17 | constructor() { 18 | 19 | } 20 | 21 | init() { 22 | this.removeDesignTimeElements(); 23 | } 24 | 25 | // Remove any element tagged for design-time-only 26 | // used typically for in-designer