{
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